1. 程式人生 > >vue自定義指令(擴充套件的HTML)

vue自定義指令(擴充套件的HTML)

指令: 擴充套件html語法

自定義指令:

屬性:

Vue.directive(指令名稱,function(引數){

this.el -> 原生DOM元素

});

<div v-red="引數"></div>

指令名稱: v-red  ->  red

* 注意: 必須以 v-開頭

<script> Vue.directive('red',function(){ this.el.style.background='red'; }); window.onload=function
(){ var vm=new Vue({ el:'#box', data:{ msg:'welcome' } }); }; </script> </head> <body> <div id="box"> <span v-red> 這是例項 </span> <span v-red
>
            這是例項
</span> <span v-red>
            這是例項
</span>
</div></body>
例項2:
<script>
        Vue.directive('red',function(color){
            this.el.style.background=color;
        });

        window.onload=function(){
            var 
vm=new Vue({ el:'#box', data:{ a:'blue' } }); }; </script> </head> <body> <div id="box"> <span v-red="a"> asdfasd </span> </div>
實際上相當於data中的a先傳給v-red中的a,然後傳給自定義指令中的color,更清晰的自定義指令傳參如下
<script>
        Vue.directive('red',function(color){
            this.el.style.background=color;
        });
        window.onload=function(){
            var vm=new Vue({
                el:'#box'
});
        };
    </script>
</head>
<body>
    <div id="box">
        <span v-red="'blue'">
            asdfasd
        </span>
    </div>
</body>
其原理都是事件繫結,如下
<script>
        Vue.directive('red',{
            bind:function(){
                this.el.style.background='red';
            }
        });
        window.onload=function(){
            var vm=new Vue({
                el:'#box'
});
        };
    </script>
</head>
<body>
    <div id="box">
        <span v-red>
            asdfasd
        </span>
    </div>

</body>