vue学习笔记:3.自定义指令

1.自定义指令——全局指令
使用 Vue.directive() 定义全局指令
其中:参数1: 指令的名称,注意,在定义的时候,指令的前面不需要加 v- 前缀;参数2:是一个对象,这个对象身上,有一些指令相关的函数,这些函数可以在特定的阶段执行相关的操作。
2.自定义指令——私有指令
使用directives: {}定义私有指令
Html

<!-- 注意: Vue中所有的指令,在调用的时候,都以 v- 开头 -->
<div id="app2">
	<input type="text" class="form-control" id="search" v-focus v-color> 
	<input type="text" class="form-control" id="search" v-focus v-color="'blue'">
</div>

Js
(1)全局指令

// 自定义一个获取文本框焦点的指令 v-focus
Vue.directive('focus', {
    bind: function(el) {    //每当指令绑定到元素上的时候,会立即执行这个 bind 函数,只执行一次
        // 注意:在每个函数中,第一个参数,永远是el,表示被绑定了指令的元素,这个el参数,是一个原生的js对象
        // 在元素刚绑定了指令的时候,还没有插入到DOM中去,这时候,调用 focus 方法没作用
        // 因为,一个元素,只有插入DOM之后,才能获取焦点
        // el.focus();
    },
    inserted: function(el) {    //表示元素插入到DOM中的时候会执行,只触发一次
        el.focus();
        // 和 JS 行为相关的操作,最好写在 inserted 中去执行,防止 JS 行为不生效
    },
    updated: function(el) {   //当VNode更新的时候会执行,可能会触发多次

    }
});

// 自定义一个为文本框设置字体颜色的指令 v-color
Vue.directive('color', {
    // 样式只要通过指令绑定给了元素,不管元素有没有被插入到页面中去,这个元素一定有了一个内联样式

    // bind: function(el) {
    // 和样式相关的操作可以定义在 bind 中
    //     el.style.color = 'red';
    // }

    bind: function(el, binding) {
        console.log(binding.name, binding.value, binding.expression);
        el.style.color = binding.value;
    }
});

(2)私有指令

var vm2 = new Vue({
   el: '#app2',
    data: {
        dt: new Date()
    },
    directives: {   // 自定义私有指令
        'fontweight': {  // 设置字体大小
            bind: function(el, binding) {
                el.style.fontWeight = binding.value;
            }
        },
        'fontsize': function(el,binding) {   // 注意:这个 function 等同于把代码写到了 bind 和 update 中去
            el.style.fontSize = parseInt(binding.value) + 'px';
        }
    }
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值