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 相关文章推荐
Z-Blog中用到的js代码
Mar 15 Javascript
利用404错误页面实现UrlRewrite的实现代码
Aug 20 Javascript
瀑布流布局并自动加载实现代码
Mar 12 Javascript
js判断undefined变量类型使用typeof
Jun 03 Javascript
页面加载完毕后滚动条自动滚动一定位置
Feb 20 Javascript
jquery选择器需要注意的问题
Nov 26 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
Apr 11 Javascript
vue-music关于Player播放器组件详解
Nov 28 Javascript
Vue中 key keep-alive的实现原理
Sep 18 Javascript
深入理解js A*寻路算法原理与具体实现过程
Dec 13 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中获取url与物理路径的总结
2013/06/21 PHP
php ci框架验证码实例分析
2013/06/26 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
Python求解平方根的方法
2015/03/11 Python
linux下python抓屏实现方法
2015/05/22 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
Python continue语句实例用法
2020/02/06 Python
如何理解python对象
2020/06/21 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
与UNIX有关的几个名词
2015/09/17 面试题
校园之星获奖感言
2014/01/29 职场文书
男女朋友协议书
2014/04/23 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
卖房授权委托书样本
2014/10/05 职场文书
医院见习报告范文
2014/11/03 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
幽灵公主观后感
2015/06/09 职场文书
话题作文之诚信
2019/11/28 职场文书