Vue——自定义指令directive

基本使用


HTML

使用“v-”前缀自定义一个属性。


JS

使用directive设置。


语法

Vue.directive('属性名',function(所在元素,定义内容){})


实例

HTML

<!--自定义的属性pin,需要加“v-”前缀-->
<!--属性值是布尔值,true的话,便position: fixed-->

<div v-pin="card1.painned" class="card">
    <!--点击之后,变为fixed-->
    <button @click="card1.painned =!card1.painned">钉住/取消</button>
</div>


JS
            //属性名        所在元素  pin等于的内容
Vue.directive('pin',function(ele,binding){

                // 这个就是我们定义的card1.pinned
    var pinned = binding.value; 

    if(pinned){
        ele.style.position = 'fixed';
        ele.style.top = '10px';
        ele.style.left = '10px';
    }else{
        ele.style.position = 'static'
    }
})

new Vue({
    el:'#app',
    data: {
        //定义这个card的pinned默认为false
        card1: {
            painned: false,
        },
    }
})




配置传参以及修饰符


HTML

在自定义属性后面使用“.”添加修饰符。

通过“”添加参数。参数要在修饰符前面!!!


JS

使用modifiers获取修饰符

通过arg获取参数。


实例

HTML

<!--注意这里,pin后面的参数(true),修饰符(bottom right)-->
<div v-pin:true.bottom.right="card1.painned" class="card">
    <button @click="card1.painned =!card1.painned">钉住/取消</button>
</div>

JS
Vue.directive('pin',function(ele,binding){

var pinned = binding.value; 

//通过过modifiers获取修饰符
var position = binding.modifiers;

//通过arg获取参数
var warnning = binding.arg;

//通过

    if(pinned){
        ele.style.position = 'fixed';

        //遍历一下修饰符
        for (var key in position){
            if(position[key]){
                ele.style[key] = '10px';
            }
        }
        //这里判断一下参数
        if(warnning === 'true'){
            ele.style.background = 'yellow';
        }
    }else{
        ele.style.position = 'static'
    }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值