Vue directive 回调运用
Vue的官方自定义directive,基本调用简洁如下:
Vue.directive('my-directive', {
bind: function () {},// 指令与被绑定元素第一次绑定时触发,通常做一些事件监听的初始化
inserted: function () {},// 绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。
update: function () {},// 被绑定元素内容发生变化时触发,可接受参数,在这里也可以进行事件监听的初始化
componentUpdated: function () {},// 被绑定元素所在模板完成一次更新周期时调用。
unbind: function () {}// 指令与元素解绑时触发,比如通过路由转跳页面时需要解绑指令
})
在某些组件中,类似于elment-ui中的checkbox多选按钮,里面的给出的api并没有click事件,只能通过change事件(也就是选中和未选中切换时触发)来进行一些操作,这里如果有一个必须点击触发的需求的话,那就可以用自定义指令重新赋予点击事件初步解决,当然这里主要是看它如何回调反作用于当前Vnode(当前页面);
<el-checkbox v-banSlect="{fn:checkSlect}">test</el-checkbox>
directives:{//这里面没有定义this对象
banSlect:{
bind(el,bind,vnode){
},
update(el,bind){
fn.call(null,mval,val,code,item,oldval);//这里就是运行fn
//只要dom刷新,update就会触发,即使值没有改变
},
unbind(){
}
}
},
methods: {
checkSlect(){alert(“已回调”)
console.log(this)//这里就是改组件的VueComponent对象
}
},
},
通过上面的方法就可以使自定义的方法和整个组件关联了,想调用组件里面的方法,就只能通过对象字面量吧函数方法传给bind里面,然后在相应状态(这里是update)调用该方法,这里面有点奇怪的是checkSlect里面的this是有值的,update里是没this定义的,直接运行的checkSlect或者用上文的call,理论上是this是指向Windows(非严格模式),但这里this指向的是VueComponent对象,从效果上来说就是我们想要的效果,至于原因,我后面再跟进。
总而言之,通过对象字面量传递函数方法或者属性变量来关联自定义的指令和组件。
Vue directive 回调运用的更多相关文章
- Vue directive自定义指令+canvas实现H5图片压缩上传-Base64格式
前言 最近优化项目-手机拍照图片太大,回显速度比较慢,使用了vue的自定义指令实现H5压缩上传base64格式的图片 canvas自定义指令 Vue.directive("canvas&qu ...
- Vue.directive全局自定义指令案例
今天正好这个知识点有点淡忘了,就随笔一下吧: Vue.directive(参数1,参数2) 参数1:指令名称,如"drag" 参数2:指令要实现的回调函数,其中回调函数中也有两个参 ...
- Vue.directive 自定义指令的问题
1.今天复习一下Vue自定义指令的代码,结果出现一个很无语的结果,先贴代码. 2. <div id="example" v-change-by="myColor&q ...
- Vue.directive添加全局指令详解
自定义指令创建: Vue.directive( 'mycolor(指令名称:推荐全部小写,驼峰命名会出现问题,看最后面)' , { bind:function(){}, //本例只介绍inserted ...
- Vue.directive注册指令
指令定义函数提供了几个钩子函数(可选): vue指令的生命周期 bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作. inserted: 被绑定 ...
- Vue.directive自定义指令
Vue除了内部指令,我们也可以定义一些属于自己的指令,比如我们要定义一个v-diy的指令,作用就是让文字变成红色. 写好了这个功能,我们现在就自己定义一个全局的指令.我们这里使用Vue.directi ...
- Vue.directive基础,在Vue模块开发中使用
这是从网上找到的一个案例,由于网上的案例有坑,所以我在这里从新上传一次! 首先在main.js里引入两个自定义指令 import {focus, drag} from './components/da ...
- Vue.directive使用注意
首先,Vue.directive要在实例初始化之前,不然会报错,还有,定义的指令不支持驼峰式写法,也会报下面同样的错,虽然在源码中没有找到在哪里统一处理大小写,但是在有关directive的方法中捕捉 ...
- Vue.directive 自定义指令
一.什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在 ...
随机推荐
- 201521123014 《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 Q1. 代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通 ...
- 201521123075 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. - 了解了多态就是以单一的接口操作多种类型的对象,但是对多态和继承的关系还是有点混乱. - ...
- 201521123045 《Java程序设计》第2周学习总结
---恢复内容开始--- #1. 本周学习总结 上课讲解了上次的实验题目,对其中题目的一些问题得到了解决.学会了java数组的使用,对如何使用码云上传代码有了更清晰的理解.pta还是有一些问题没有解决 ...
- 201521123006 《java程序设计》 第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...
- java :instanceof用法
Java中的instanceof是用来判断某个实例是不是某个类的实例. 例如:A instanceof B (A为某个实例,B为某个类名) 如果A为B的实例,则:(A instanceof B)==t ...
- Project Euler:99 Largest exponential C++
Comparing two numbers written in index form like 211 and 37 is not difficult, as any calculator woul ...
- Struts+Spring+Hibernate项目整合AJAX+JSON
1.什么是AJAX AJAX是 "Asynchronous JavaScript and XML" 的简称,即异步的JavaScript和XML. 所谓异步,就是提交一个请求不必等 ...
- Linux 常用命令之二
整理以前学习Linux的笔记. 查找目录.查看当前所在路径.新建文件.查看文件内容.修改文件内容.压缩文件操作.搜索命令.管道命令.查看进程.终止进程.查看端口. 7,命令find--查找目录 fin ...
- 远程无法访问linux Mysql解决方案
在网上有很多关于这个的解决方案,我也采用了 写的比较详细的如: 1. 改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更 ...
- 修改yum源
安装 centos 之后,修改 yum 源到其它国内源 1. 备份原文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Ba ...