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 相关文章推荐
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
Aug 09 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
用js判断输入是否为中文的函数
Mar 10 Javascript
jQuery中hide()方法用法实例
Dec 24 Javascript
使用JavaScript 实现的人脸检测
Mar 24 Javascript
JS基于面向对象实现的放烟花效果
May 07 Javascript
Vue开发中整合axios的文件整理
Apr 29 Javascript
AngularJS路由Ui-router模块用法示例
May 29 Javascript
js禁止浏览器页面后退功能的实例(推荐)
Sep 01 Javascript
vue 使用vue-i18n做全局中英文切换的方法
Oct 29 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 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将向Java靠拢
2006/10/09 PHP
PHP4实际应用经验篇(2)
2006/10/09 PHP
PHP开发负载均衡指南
2010/07/17 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
javascript显示选择目录对话框的代码
2008/11/10 Javascript
javascript GUID生成器实现代码
2009/10/31 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
JS功能代码集锦
2016/05/04 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
Python列表生成器的循环技巧分享
2015/03/06 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
python实现串口通信的示例代码
2020/02/10 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
日期和时间问题
2015/01/04 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
应届大专毕业生个人自荐信
2013/09/22 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP