5.自定义全局指令

1.自定义全局指令实现:

需求:为搜索名称关键字添加自定义指令:v-focus,使得进入页面后即获得焦点

需求:使用 Vue.directive()定义全局的指令v-focus

<label>
     搜索名称关键字:
     <!-- 注意:Vue中所有的指令,在调用的时候,都以 v- 开头 -->
     <input type="text" class="form-control" v-model="keywords" id="search" v-focus v-color="'green'">
</label>

 实现:

<script>
    // 使用 Vue.directive()定义全局的指令v-focus
    // 参数1:指令的名称,注意,在定义的时候,指令的名称前面不需要加 v- 前缀, 
    // 但是:在调用的时候,必须在指令名称前加上v-前缀来进行调用
    // 参数2:是一个对象,这个对象身上有一些指令相关的函数,这些函数可以在特定的阶段,执行相关的操作
    Vue.directive('focus', {
      bind: function (el) { // 每当指令绑定到元素上的时候,会立即执行这个 bind 函数,只执行一次
        // 注意: 在每个函数中,第一个参数永远是el,表示被绑定了指令的那个元素,这个 el 参数,是一个原生的JS对象
        // 在元素刚绑定了指令的时候,还没有插入到DOM中去,这时候,调用 focus 方法没有作用
        // 因为,一个元素只有插入DOM之后,才能获取焦点
        // el.focus()
      },
      inserted: function (el) {  // inserted 表示元素插入到DOM中的时候,会执行 inserted 函数【触发1次】
        el.focus()
        // 和JS行为有关的操作,最好在 inserted 中去执行,放置 JS行为不生效
      },
      updated: function (el) {  // 当VNode更新的时候,会执行 updated,可能会触发多次

      }
    })

    //自定义一个设置字体颜色的指令
    Vue.directive('color', {
      // 如果样式通过指令绑定给了元素,不管这个元素有没有被插入到页面中去,这个元素肯定有了一个内联的样式
      // 将来元素肯定会显示到页面中,这时候,浏览器的渲染引擎必然会解析样式,应用给这个元素
      bind: function (el, binding) {
        // el.style.color = 'red'
        // console.log(binding.name)
        // 和样式相关的操作,一般都可以在 bind 执行

        // console.log(binding.value)
        // console.log(binding.expression)
        el.style.color = binding.value
      }
    })
</script>

[自定义指令参考](https://cn.vuejs.org/v2/guide/custom-directive.html)  

转载于:https://www.cnblogs.com/yaboya/p/10245954.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值