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小技巧--自动隐藏红叉叉
Aug 13 Javascript
浅析javascript闭包 实例分析
Dec 25 Javascript
用js来获取上传的文件名纯粹是为了美化而用
Oct 23 Javascript
Javascript通过overflow控制列表闭合与展开的方法
May 15 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
JS上传图片预览插件制作(兼容到IE6)
Aug 07 Javascript
easyui-datagrid特殊字符不能显示的处理方法
Apr 12 Javascript
利用node.js实现自动生成前端项目组件的方法详解
Jul 12 Javascript
JS中Attr的用法详解
Oct 09 Javascript
5 种JavaScript编码规范
Jan 30 Javascript
用Vue写一个分页器的示例代码
Apr 22 Javascript
vue-cli中使用高德地图的方法示例
Mar 28 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+AJAX无刷新分页实现方法
2015/11/03 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
js获取div高度的代码
2008/08/09 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
Python中import机制详解
2017/11/14 Python
python实现BackPropagation算法
2017/12/14 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
python截取两个单词之间的内容方法
2018/12/25 Python
对Python实现累加函数的方法详解
2019/01/23 Python
Django框架验证码用法实例分析
2019/05/10 Python
Python中@property的理解和使用示例
2019/06/11 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
Python OpenCV调用摄像头检测人脸并截图
2020/08/20 Python
python库matplotlib绘制坐标图
2019/10/18 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
Python 创建守护进程的示例
2020/09/29 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
关于毕业的中学校园广播稿
2014/01/26 职场文书
《菜园里》教学反思
2014/04/17 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
信用卡工资证明范本
2014/10/17 职场文书
2014年稽查工作总结
2014/12/20 职场文书
小数乘法教学反思
2016/02/22 职场文书
python基础详解之if循环语句
2021/04/24 Python
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS