Vue.js 学习笔记 十一 自定义指令

之前看到过v-bind,v-on等指令,Vue还可以自定义指<div id="divApp"        <div v-focus></div>

        <input type="text" v-focus v-color="'blue'" />
    </div>

    <script>

        Vue.directive('focus', {
            //当指令绑定到元素上时,会执行bind,并且只执行一次
            //el参数,是指绑定这个指令的元素,并且是一个原生JS的对象,可以直接调用原生的JS方法
            bind: function (el) {
                //在bind函数里想令元素获取焦点是不可行的,因为此时元素还没有插入DOM,不会报错,但是也无效
                //el.focus();
                //但是像这样的操作就没问题啦
                el.innerHTML = "DIV上来就有内容!";
            },
            //元素插入到DOM时,执行inserted函数
            //所以这里调用focus时,才会令元素获取焦点
            inserted: function (el) {
                el.focus();
                el.value = "文本框初始化";
            }
        })
        //使用参数
        Vue.directive('color', {
            bind: function (el, binding) {
                el.style.color = binding.value;
            }
        })
        
        var v = new Vue({
            el: '#divApp',
            data: {
            },
            methods: {
            },
       directives: {//私有自定义指令
        color: {
          bind: function (el, binding) {
                el.style.color = 'red';
              }
        }

}


            
        })

    </script>

1. 使用参数时,需要注意写法是 v-color="'blue'" ,而不是v-color="blue",因为如果里面没有单引号,Vue会当作自己的属性或者方法等,在实例中查找,而不是当做传递的参数。 

2. Vue.directive定义的是公共的自定义指令,任何元素都可以调用,而在Vue实例中定义的自定义指令,是私有的,只有在指定的元素才能调用,写法和公共的基本一样,另外当私有和公共的指令同名时,按就近原则,先找私有,没有再找公共,定义私有时

3. 钩子函数的binding属性有

  • name: 指令名,不包括 v- 前缀。
  • value: 指令的绑定值, 例如: v-my-directive="1 + 1", value 的值是 2
  • oldValue: 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
  • expression: 绑定值的表达式或变量名。 例如 v-my-directive="1 + 1" , expression 的值是 "1 + 1"
  • arg: 传给指令的参数。例如 v-my-directive:foo, arg 的值是 "foo"
  • modifiers: 一个包含修饰符的对象。 例如: v-my-directive.foo.bar, 修饰符对象 modifiers 的值是 { foo: true, bar: true }

4. 当只需要bind钩子函数时,可以简写成

 color: function (el, binding) {
                        el.style.color = 'red';
                }

  全局指令也可以简写。

 

上一篇:

Vue.js 学习笔记 十 自定义按键事件

下一篇

Vue.js 学习笔记 十二 Vue发起Ajax请求

转载于:https://www.cnblogs.com/luyShare/p/11550382.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值