vue 自定义指令

文档可能描述的比较齐全,在用的过程中有一点问题。参照了别人的博客,在这里只是做个总结。

自定义指令可以是全局的,也可以是局部的,其实这个就大同小异,并没有什么太大差别,最值得注意的应该是钩子函数

一个指令定义对象可以提供如下几个钩子函数 (均为可选):

  • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

  • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

  • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

  • componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。

  • unbind:只调用一次,指令与元素解绑时调用。

     

感觉在form表单的用的最多吧(个人想法)

 比如我想要去掉所有的空格,当然trim 也是能去空格的,但是它是去首尾空格,我想去掉所有空格

<input type="text" name="phone" placeholder="请输入手机号"  v-model.trim="phone" v-trimall>
directives: {
trimall: {
// 指令的定义
componentUpdated: function (el) {
el.value = el.value.replace(/\s/g,'')
}
}
},

  在用的过程中试了所有的钩子,要更新之后话选  componentUpdated

就是自己的一些小理解

 

posted @ 2018-11-20 18:55  粉色年华  阅读(238)  评论(0编辑  收藏  举报