Vue自定义指令

Vue的全局指令与局部指令

学习Vue中我们为了更为方便的操作元素,经常使用自定义指令,自定义属性又可细分为全局指令和私有指令,在全局范围内定义的指令称为全局指令,在函数内部定义的指令称为私有指令

全局指令

定义一个文本框,我们可以为它添加焦点指令,注意,在Vue中所有的指令,在调用的时候,都以 v- 开头,我们在此定义了focus指令和color指令

 <input type="text" class="form-control" v-model="keywords" id="search" v-focus v-color="'green'">

在全局范围内可以使用 Vue.directive() 定义全局的指令 v-focus和v-color,建议直接在创建vue实例化前进行定义,这样不会引起混乱。

 Vue.directive('focus', {
      bind: function (el) { 
      },
      inserted: function (el) {  
        el.focus()
      },
      updated: function (el) { 

      }
    })

Vue.directive() 中有两个参数:
其中:参数1 : 指令的名称,注意,在定义的时候,指令的名称前面,不需要加 v- 前缀, 但是,在调用的时候,必须 在指令名称前 加上 v- 前缀来进行调用
参数2:是一个对象,这个对象身上,有一些指令相关的函数,这些函数可以在特定的阶段,执行相关的操作
参数对象具体可参考Vue.js指南,bind每当指令绑定到元素上的时候,会立即执行这个 bind 函数,只执行一次
注意: 在每个 函数中,第一个参数,永远是 el ,表示 被绑定了指令的那个元素,这个 el 参数,是一个原生的JS对象
在元素 刚绑定了指令的时候,还没有 插入到 DOM中去,这时候,调用 focus 方法没有作用
因为,一个元素,只有插入DOM之后,才能获取焦点,所以我们可在inserted中将元素插入到DOM树中
建议:与js行为有关的操作,在insered中执行,与样式有关的在bind中执行,具体可自行体会
定义颜色指令

Vue.directive('color', {
      bind: function (el, binding) {
        el.style.color = binding.value
      }
    })

私有指令

我们首先定义一个div

<div id="app3">
     <h3 v-color="'pink'" v-fontweight="900" v-fontsize="50">合理</h3>
  </div>

然后我们创建vue实例化

var vm3=new Vue({
      el:'#app3',
      data:{},
      methods:{},
      //定义私有指令
       directives:{
        'fontweight':{
          bind:function(el,binding){
            el.style.fontweight=binding.value
          }
        },
        //可简写为以下方式
        'fontsize':function(el,binding){
          el.style.fontSize=parseInt(binding.value)+'px'
        }
      }
    })

全局指令效果显示:
在这里插入图片描述
私有指令效果显示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值