vue文件局部使用自定义指令,vue常用自定义指令

  vue文件局部使用自定义指令,vue常用自定义指令

  本文主要介绍了vue的全局自定义命令和局部自定义命令的使用,具有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。

  

目录

  局部自定义指令(仅用于组件中的元素)定义全局自定义指令的挂钩函数。自定义指令钩子函数的参数示例。除了默认的核心指令(v-model和v-show),Vue还允许注册自定义指令。

  

局部自定义指令(只针对组件内的元素)

  父组件app.vue

  模板

  div id=应用程序

  测试api/测试API

  /div

  /模板

  脚本

  从导入testApi。/components/testApi.vue

  导出默认值{

  data (){

  返回{

  }

  },

  观察:{

  },

  方法:{

  },

  组件:{

  testApi

  }

  }

  /脚本

  风格

  /风格

  组件testApi.vue

  模板

  差异

  !-让输入元素在页面打开时获得焦点-

  输入类型= text v-自动对焦

  /div

  /模板

  脚本

  导出默认值{

  指令:{

  //自定义指令的名称

  自动对焦:{

  //Hook函数,在绑定元素插入父节点时调用(父节点存在时可以调用,但不一定要存在于文档中)。

  已插入(el){

  焦点()

  console . log( inserted );

  },

  //只调用一次。指令在第一次绑定到元素时被调用。使用这个钩子函数,您可以定义一个在绑定期间执行一次的初始化操作。

  bind(){

  console . log( bind );

  },

  //当其组件的VNode更新时调用,但可能发生在其子组件的VNode更新之前。

  //指令的值可能已更改,也可能未更改。但是您可以通过比较更新前后的值来忽略不必要的模板更新。

  update(){

  console.log(“更新”);

  },

  //当其组件的VNode和其子组件的VNode都更新时调用。

  componentUpdated(){

  console . log( component updated );

  },

  //当指令从元素解除绑定时,只调用一次。

  unbind(){

  console . log( unbind );

  }

  }

  },

  data () {

  返回{

  }

  },

  道具:[],

  方法:{

  },

  已创建(){

  },

  已安装(){

  },

  组件:{

  }

  }

  /脚本

  样式范围

  /风格

  效果图:

  

定义全局自定义指令

  在任何页面的任何输入中添加v-autoFcs。

  Vue.directive(autoFcs ,{

  //Hook函数,在绑定元素插入父节点时调用(父节点存在时可以调用,但不一定要存在于文档中)。

  已插入(el){

  焦点()

  console . log( inserted );

  },

  //只调用一次。指令在第一次绑定到元素时被调用。使用这个钩子函数,您可以定义一个在绑定期间执行一次的初始化操作。

  bind(){

  console . log( bind );

  },

  //当其组件的VNode更新时调用,但可能发生在其子组件的VNode更新之前。

  //指令的值可能已更改,也可能未更改。但是您可以通过比较更新前后的值来忽略不必要的模板更新。

  update(){

  console.log(“更新”);

  },

  //当其组件的VNode和其子组件的VNode都更新时调用。

  componentUpdated(){

  console . log( component updated );

  },

  //当指令从元素解除绑定时,只调用一次。

  unbind(){

  console . log( unbind );

  }

  })

  效果图:

  

自定义指令的钩子函数

  钩子函数

  指令定义函数提供了几个钩子函数 (可选):

  Bind:只调用一次,指令第一次绑定到元素时调用。使用这个钩子函数,您可以定义一个在绑定期间执行一次的初始化操作。Inserted:当绑定元素插入父节点时调用(父节点存在时可以调用,但不一定要存在于文档中)。Update:当组件的VNode更新时调用,但是可能发生在其孩子的 VNode 更新之前。指令的值可能已更改,也可能未更改。但是,通过比较更新前后的值,可以忽略不必要的模板更新(详细的钩子函数参数见下文)。ComponentUpdated:当组件的VNode及其孩子的 VNode全部更新时调用。Unbind:仅在指令从元素解除绑定时调用一次。接下来我们来看看hook函数的参数(包括el,binding,vnode,oldVnode)。

  

自定义指令钩子函数的参数

  钩子函数参数

  钩子函数被赋予了以下参数:

  El:指令绑定的元素可以用来直接操作DOM。绑定:包含以下属性的对象:名称:指令名称,不包括v前缀。Value:指令的绑定值,例如:v-my-directive="1 1 ",value的值为2。OldValue:指令绑定的前一个值,仅在update和componentUpdated挂钩中可用。无论值是否改变都可用。表达式:绑定值的字符串形式。比如v-my-directive="1 1 "而expression的值是 1 1 。Arg:传递给指令的参数。比如v-my-directive:foo,arg的值就是‘foo’。修改器:包含修改器的对象。例如:v-my-directive.foo.bar,modifier对象modifiers的值为{foo: true,bar: true}。Vnode:Vue编译生成的虚拟节点,更多细节请参考VNode API。OldVnode:前一个虚拟节点,它只在update和componentUpdated挂钩中可用。

  

例子

  div id= hook-arguments-example v-demo:foo . a . b= message /div

  Vue.directive(demo ,{

  bind: function (el,binding,vnode) {

  var s=JSON.stringify

  el.innerHTML=

  名称: s(binding.name) br

  值: s(binding.value) br

  表达式: s(binding.expression) br

  参数:“s(binding . arg)”br”

  修饰符: s(binding.modifiers) br

  vnode keys: Object.keys(vnode)。联接(,)

  }

  })

  新Vue({

  El:“# hook-arguments-example”,

  数据:{

  信息:“你好!”

  }

  })

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: