Vue自定义指令使用方法详解


Posted in Javascript onAugust 21, 2017

Vue自定义指令的使用,具体内容如下

1.自定义指令的语法

Vue自定义指令语法如下:

Vue.directive(id, definition)

传入的两个参数,id是指指令ID,definition是指定义对象。其中,定义对象可以提供一些钩子函数

2.钩子函数

定义对象的钩子函数如下:

Vue自定义指令使用方法详解

钩子函数的参数

el: 指令所绑定的元素,可以用来直接操作 DOM 。

binding: 一个对象,包含以下属性:
*name: 指令名,不包括 v- 前缀。
*value: 指令的绑定值, 例如: v-my-directive=”1 + 1”,value 的值是 2。
*oldValue: 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
*expression: 绑定值的字符串形式。 例如 v-my-directive=”1 + 1” , expression 的值是 “1 + 1”。
*arg: 传给指令的参数。例如 v-my-directive:foo, arg 的值是 “foo”。
*modifiers: 一个包含修饰符的对象。 例如: v-my-directive.foo.bar, 修饰符对象 modifiers 的值是 { foo: true, bar: true }。

vnode: Vue 编译生成的虚拟节点。

oldVnode: 上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。

3.例子

Vue自定义指令常见使用例子如下:

Vue.directive('my-directive', {
 bind: function(){
 //做绑定的准备工作
 //比如添加事件监听器,或是其他只需要执行一次的复杂操作
 },
 inserted: function(){
 //...
 },
 update: function(){
 //根据获得的新值执行对应的更新
 //对于初始值也会调用一次
 },
 componentUpdated: function(){
 //...
 },
 unbind: function(){
 //做清理操作
 //比如移除bind时绑定的事件监听器
 }

当指令的定义对象中只使用update时,只需直接传入函数即可,如下:

Vue.directive('my-directive', function(){
 //...
})

4.应用

我们往往自定义指令都是定义到全局,方式如下:

第一步:建立一个全局的命令文件例如:directive/directives.js.

第二步:利用Vue.directive()建立一个全局命令,并将它暴露出来,例如一个focus 让表单自动聚焦.

directives.js

import Vue from 'vue';
Vue.directive('focus',{
 //当绑定元素插入到DOM中
 inserted: function(el){
  el.focus(); //元素聚焦
  el.setAttribute('placeholder','自定义内容');
 }
})
Vue.directive('***',{
 inserted: function(el){
  //....
 }
})

export {Vue}

第三步:在main.js(入口JS文件)中将它引入,可以省略文件后缀.

main.js

import directive from './components/global/directives';

这样任何一个Vue文件只要这样v-focus(命令名),就可以很方便的用到了

<el-input v-model="input" placeholder="" v-focus></el-input>

如果指令需要传值或者多个值

<body id="example">
 <div id="demo" v-demo="{color : 'white',text : 'hello!'}"></div>
</body>
<script>
 Vue.directive('demo',function(value){
  console.info(value.color); //white
  console.info(value.text) // hello!
 })
 var demo = new Vue({
  el : '#demo'
 })
</script>
----------

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery css函数用法(判断标签是否拥有某属性)
May 28 Javascript
Jquery插件之打造自定义的select标签
Nov 30 Javascript
jQuery Tools tab使用介绍
Jul 14 Javascript
jquery 中ajax执行的优先级
Jun 22 Javascript
js判断文本框输入的内容是否为数字
Dec 23 Javascript
浅谈jQuery中ajaxPrefilter的应用
Aug 01 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
Javascript动画效果(4)
Oct 11 Javascript
BootStrap 页签切换失效的解决方法
Aug 17 Javascript
详解使用mpvue开发github小程序总结
Jul 25 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
javscript 数组扁平化的实现
Feb 03 Javascript
javascript实现Java中的Map对象功能的实例详解
Aug 21 #Javascript
Vue ElementUI之Form表单验证遇到的问题
Aug 21 #Javascript
JavaScript中各数制转换全面总结
Aug 21 #Javascript
JQuery判断正整数整理小结
Aug 21 #jQuery
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
Aug 21 #Javascript
Vue.js实现按钮的动态绑定效果及实现代码
Aug 21 #Javascript
Node.js简单入门前传
Aug 21 #Javascript
You might like
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
php实现文章评论系统
2019/02/18 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
html5新特性与用法大全
2018/09/13 HTML / CSS
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
大学生冰淇淋店商业计划书
2014/01/14 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
民事辩护词范文
2015/05/21 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
深入浅析React中diff算法
2021/05/19 Javascript
python for循环赋值问题
2021/06/03 Python
Python循环之while无限迭代
2022/04/30 Python