美文网首页Vue程序员
vue(二)- directive定义全局和局部指令

vue(二)- directive定义全局和局部指令

作者: 编程小橙子 | 来源:发表于2018-11-20 13:19 被阅读0次
vue.jpg

directive定义全局和局部指令以及指令简写

1.使用Vue.directive()定义一个全局指令    Vue.directive('指令名称',{对象})
2.参数一:指令的名称,定义时指令前面不需要写v-
3.参数二:是一个对象,该对象中有相关的操作函数
4.在调用的时候必须写v-
5.自定义指令中的常用的3个钩子函数:
    5.1bind:
      1.指令绑定到元素上回立刻执行bind函数,只执行一次
      2.每个函数中第一个参数永远是el,表示绑定指令的元素,el参数是原生js对象
      3.通过el.focus()是无法获取焦点的,因为只有插入DOM后才生效
    5.2inserted:
      1.inserted表示一个元素,插入到DOM中会执行inserted函数,只触发一次
    5.3updated:
      1.当VNode更新的时候会执行updated,可以触发多次
6.定义一个局部指令
    测试案例步骤:
    1.首先需要在html中创建一个盒子
    2.接着需要通过实例化Vue并且通过el将盒子所对应的id进行绑定
    3.在盒子里面所对应的要自定义的标签上通过v-xxx标注
    局部定义的格式:
      directives:{
            'xxx':{
              bind:function(el,binding){
                el.style.xxx = binding.value
            }
          }
      }
 7.指令函数的简写
    function等同于将代码写入bind和update里
    directive:{    
        'xxx':function(el,binding){
            el.style.xxx = binding.value
        }
    }
<!DOCTYPE html>
<html>
  <head>
      <meta charset="utf-8" />
      <title></title>
      <script src="js/vue-2.4.0.js" type="text/javascript" charset="utf-8"></script>
  </head>
  <body>
      <div id="box">
          <p v-fontsize="'20px'" v-color="'green'">{{msg}}<input type="text" v-focus /></p>
          <p v-color="'red'">{{msg}}<input type="text" v-color="'red'" /></p>
      </div>
  </body>
  <script type="text/javascript">
      //使用Vue.directive()定义一个全局指令
      //1.参数一:指令的名称,定义时指令前面不需要写v-
      //2.参数二:是一个对象,该对象中有相关的操作函数
      //3.在调用的时候必须写v-
      Vue.directive('focus',{
          //1.指令绑定到元素上回立刻执行bind函数,只执行一次
          //2.每个函数中第一个参数永远是el,表示绑定指令的元素,el参数是原生js对象
          //3.通过el.focus()是无法获取焦点的,因为只有插入DOM后才生效
          bind:function(el){
              //el.focus()
          },
          //inserted表示一个元素,插入到DOM中会执行inserted函数,只触发一次
          inserted:function(el){
              el.focus()
          },
          //当VNode更新的时候会执行updated,可以触发多次
          updated:function(el){
              //el.focus()
          }
      })
      //自定义一个设置字体颜色指令
      Vue.directive('color',{
          //只要通过指令绑定给了元素,元素一定会显示在页面上
          //一般情况和样式有关的使用bind函数
          bind:function(el,binding){  //通过binding来传递值
              el.style.color = binding.value
          }
      })
      //实例化Vue
      var vm = new Vue({
          el:'#box',
          data:{
              msg:'测试:'
          },
          //定义一个局部指令
          directives:{  //自定义一个局部指令
              'color':{  //设置字体颜色
                  bind:function(el,binding){
                      el.style.color = binding.value
                  }
              },
              //指令函数的简写:
              //function等同于将代码写入bind和update里
              'fontsize':function(el,binding){  //设置字体大小
                  el.style.fontSize = parseInt(binding.value) + 'px'  
              }
          }
      })
  </script>
</html>
0.jpg

相关文章

网友评论

    本文标题:vue(二)- directive定义全局和局部指令

    本文链接:https://www.haomeiwen.com/subject/xzbtqqtx.html