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 相关文章推荐
JS模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
javascript 嵌套的函数(作用域链)
Mar 15 Javascript
不得不分享的JavaScript常用方法函数集(上)
Dec 23 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
Apr 07 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
Sep 14 Javascript
Bootstrap表单控件使用方法详解
Jan 11 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
Jul 19 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
微信web端后退强制刷新功能的实现代码
Mar 04 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
Aug 23 Javascript
JavaScript将数组转换为链表的方法
Feb 16 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实现的简单压缩英文字符串的代码
2008/04/24 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
php自定义分页类完整实例
2015/12/25 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
JS跨域总结
2012/08/30 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
Django查询数据库的性能优化示例代码
2017/09/24 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
python如何统计代码运行的时长
2019/07/24 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
年会搞笑主持词串词
2014/03/24 职场文书
比赛口号大全
2014/06/10 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
运动会入场词
2015/07/18 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL