首页 > 其他 > 详细

vue的自定义指令

时间:2021-09-23 08:39:03      阅读:20      评论:0      收藏:0      [点我收藏+]

我们之前学习的v-if,v-for等等都是vue的系统指令,我们现在需要自己开发自定义指令

Vue.directive提供了自定义指令的入口

基本使用

我们在App.vue中设置了一个p元素

1 <p v-color=‘"blue"‘>123456789</p>

v-color就是自定义的一个指令名称,blue就是属性值,我们的目的就是要让文字的颜色变成蓝色

在main.js中进行指令设置

 1 import Vue from ‘vue‘
 2 // 相对路径引入的App.vue文件
 3 import App from ‘./App.vue‘
 4 
 5 Vue.directive("color",(el,binding)=>{
 6     console.log(el)
 7     console.log(binding)
 8     el.style.color=binding.value
 9 })
10 new Vue({
11     // 渲染节点
12     render: h => h(App),
13     // 挂载函数,内部#app是vue的根节点
14 }).$mount(‘#app‘)

color指的是自定义指令的名称,如果使用一定要加上v-

第二个参数可以是函数,也可以是对象

如果是函数,函数接受两个参数,第一个是返回的元素名称

技术分享图片

 

 

返回结果

  1. expression: "\"blue\""
  2. modifiers: {}
  3. name: "color"
  4. rawName: "v-color"
  5. value: "blue"
  • expression:是一个表达式,返回的是我们设置给自定义指令的值
  • modifiers:是自定义指令如果有修饰符的时候返回的布尔值对象
  • name:就是自定义指令的名称
  • rawName:就是我们可能设置的自定义指令的名称
  • value:就是自定义指令的返回值

如果自定义指令的第二个参数是一个对象,内部是指令清单的函数钩子

 1 import Vue from ‘vue‘
 2 // 相对路径引入的App.vue文件
 3 import App from ‘./App.vue‘
 4 
 5 Vue.directive("color",{
 6     bind:(el)=>{
 7         console.log("bind",el)
 8     },    //只调用一次,指的是指令第一次绑定到元素的时候调用
 9     inserted:(el)=>{
10         console.log("inserted",el)
11     },      //只调用一次,指的是节点插入到父节点中调用
12     update:(el)=>{
13         console.log("update",el)
14     },          //数据更新时调用,在虚拟dom更新之前调用
15     componentUpdated:(el)=>{
16         console.log("componentUpdated",el)
17     },          //数据更新时调用,在虚拟dom更新后调用
18     unbind:(el)=>{
19         console.log("unbind",el)
20     },          //指令卸载的时候调用
21 })
22 new Vue({
23     // 渲染节点
24     render: h => h(App),
25     // 挂载函数,内部#app是vue的根节点
26 }).$mount(‘#app‘)
  • bind:只调用一次,指的是指令第一次绑定到元素的时候调用
  • inserted:只调用一次,指的是节点插入到父节点中调用
  • update:数据更新时调用,在虚拟dom更新之前调用
  • componentUpdated:数据更新时调用,在虚拟dom更新后调用
  • unbind:指令卸载的时候调用

vue的自定义指令

原文:https://www.cnblogs.com/keyeking/p/15306588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!