Vue自定义指令

139 阅读1分钟

自定义指令

vue中凡是 v- 开头的行内属性,都被认为是指令,不同的指令可以完成或实现不同的功效。vue自带的指令有时候无法满足实际需求,这时就需要我们自己“创建”指令,也就是自定义指令。 自定义指令分为全局自定义指令和局部自定义指令。

全局自定义指令

全局自定义指令: Vue.directive(指令名, function(el,obj){...}) 适用范围:整个项目中都可以使用

// 例如
Vue.directive('color', function(el, obj){
  // 用了几次v-color,就触发几次这个函数
  // el是使用了该指令的DOM元素,obj是该指令的一些信息,
  //如果使用v-color="xx",那obj中会有一个属性value,值就是指令后面跟的值;如果只是v-color,则obj没有value属性
  // console.log(this); // window
  console.log(el, obj);
  el.style.color = obj.value || 'red';
  });
<h4 v-color='"blue"'>哈哈哈哈哈</h4>
<div v-color>啦啦啦啦</div>

局部自定义指令

局部自定义指令: directives:{ 指令名(el, obj){ // 指令可以完成的事 } }

    let vm = new Vue({
    el: '#app',
    data: {
      name: '测试'
    },
    
    // 局部自定义指令只能用于该组件中
    directives: {
      gg(el, obj) {
        console.log('局部自定义指令', obj)
      },
      color(el, obj){ // 有局部自定义指令就用局部的,而不用全局的
        console.log('我是局部的')
      }
    }
  });
 <div id="app">
  <h1>{{name}}</h1>
  <h4 v-color='"blue"'>哈哈哈哈哈</h4>
  <div v-color>啦啦啦啦</div>

  <p v-gg='123'></p>
</div>