摘要:自定义指令自定义指令如果需要多个值,自定义指令可以传入一个对象字面量。总结在编写自定义指令时,给绑定一次性事件等初始动作,建议在钩子内完成,同时要在内解除相关绑定。
学习笔记:自定义指令自定义指令
自定义指令的注册方法分为全局注册和局部注册,比如注册一个v-focus指令,用于在、元素初始化时自动获得焦点,两种写法分别是:
//全局注册 Vue.directive("focus", {}); //局部注册 new Vue({ el: "#app", directives: { focus: {} } });
自定义指令的选项是由几个钩子函数组成,每个都是可选的:
bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
inserted:被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于document中)。
update:被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新。
componentUpdate:被绑定元素所在模板完成一次更新周期时调用。
unbind:只调用一次,指令与元素解绑时调用。
可以根据需求在不同的钩子函数内完成逻辑代码。在元素插入父节点时就调用,用到的最好是inserted。
Vue.directive("focus", { inserted(el) { el.focus(); } }); new Vue({ el: "#app", });
打开页面,input输入框自动获得焦点,成为可输入状态。
每个钩子函数都有几个参数可用:
el 指令所绑定的元素,可以用来直接操作DOM
binding 一个对象,包含以下属性:
name 指令名,不包括v-前缀
value 指令的绑定值
oldValue 指令绑定的前一个值,仅在update和componentUpdate钩子中可用。无论值是否改变都可用。
expression 绑定值的字符串形式。
arg 传给指令的参数。
modifiers 一个包含修饰符的对象。
vnode Vue编译生成的虚拟节点。
oldVnode 上一个虚拟节点仅在update和componentUpdate钩子中可用。
See the Pen Vue-自定义指令 by whjin (@whjin) on CodePen.
Time.getFormatTime()方法就是自定义指令v-time所需要的,入参为毫秒级时间戳,返回已经整理好时间格式的字符串。
在bind钩子里,将指令v-time表达式的值binding.value作为参数传入TimeFormatTime()方法得到格式化时间,再通过el.innerHTML写入指令所在元素。定时器el.__timeout__每分钟触发一次,更新时间,并且在unbind钩子里清除掉。
总结:在编写自定义指令时,给DOM绑定一次性事件等初始动作,建议在bind钩子内完成,同时要在unbind内解除相关绑定。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/102636.html
摘要:供用户在相应的阶段对其进行操作。我们像下面这样使用这个指令大多数情况下,我们只需要使用与钩子函数。里提供了函数的简写形式钩子函数有两个常用的参数和。其他用法与全局自定义指令一致。 一、vue生命周期 vue实例从创建到销毁的过程,称为生命周期,共有八个阶段。 这八个阶段里分别有一个叫做钩子函数的实例选项。供用户在相应的阶段对其进行操作。 beforeCreate(){ //组件实例刚...
摘要:供用户在相应的阶段对其进行操作。我们像下面这样使用这个指令大多数情况下,我们只需要使用与钩子函数。里提供了函数的简写形式钩子函数有两个常用的参数和。其他用法与全局自定义指令一致。 一、vue生命周期 vue实例从创建到销毁的过程,称为生命周期,共有八个阶段。 这八个阶段里分别有一个叫做钩子函数的实例选项。供用户在相应的阶段对其进行操作。 beforeCreate(){ //组件实例刚...
摘要:供用户在相应的阶段对其进行操作。我们像下面这样使用这个指令大多数情况下,我们只需要使用与钩子函数。里提供了函数的简写形式钩子函数有两个常用的参数和。其他用法与全局自定义指令一致。 一、vue生命周期 vue实例从创建到销毁的过程,称为生命周期,共有八个阶段。 这八个阶段里分别有一个叫做钩子函数的实例选项。供用户在相应的阶段对其进行操作。 beforeCreate(){ //组件实例刚...
摘要:当组件和混合对象含有同名选项时,这些选项将以恰当的方式混合自定义指令除了默认设置的核心指令和也允许注册自定义指令。 vue的复用性与组合 混合 混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件选项。以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。 当组件和混合对象含有同名选项时,这些选项将以恰当的方式混合 ...
阅读 3239·2021-11-24 10:43
阅读 4199·2021-11-24 10:33
阅读 3774·2021-11-22 09:34
阅读 2128·2021-10-11 10:58
阅读 3735·2021-10-11 10:58
阅读 861·2021-09-27 13:36
阅读 3581·2019-08-30 15:54
阅读 2966·2019-08-29 18:41