1)Vue.directive('自定義指令的名字',{
? ? ? ? ? ? inserted:function(el){? /*這個(gè)元素插入父元素的時(shí)候執(zhí)行的操作*/
? ? ? ? ? ? ? ? el.focus();
? ? ? ? ? ? }
})
2)
directives:{
? ? ? ? ? ? ? ? ? 'focus':{
? ? ? ? ? ? ? ? ? ? ? ? inserted:function(el){? /*這個(gè)元素插入父元素的時(shí)候執(zhí)行*/
? ? ? ? ? ? ? ? ? ? ? ? ? ? el.focus();
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
鉤子函數(shù)
bind: 只調(diào)用一次节吮,指令第一次綁定到元素時(shí)調(diào)用渠驼,用這個(gè)鉤子函數(shù)可以定義一個(gè)在綁定時(shí)執(zhí)行一次的初始化動(dòng)作。
inserted: 被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用。(bind與該生命周期鉤子函數(shù)作用十分類似)
update: 被綁定元素所在的模板更新時(shí)調(diào)用,而不論綁定值是否變化。通過比較更新前后的綁定值,可以忽略不必要的模板更新。
componentUpdated: 被綁定元素所在模板完成一次更新周期時(shí)調(diào)用诈泼。
簡寫形式
1)
Vue.directive('bgcolor',function(el,binding){
? ? ? ? ? ? el.style.background=binding.value;
})
2)directives:{
? ? ? ? ? ? ? /*簡寫 表示bind 和update的時(shí)候都會(huì)執(zhí)行*/
? ? ? ? ? ? ? ? ? ? 'color':function(el,binding){?
? ? ? ? ? ? ? ? ? ? ? ? el.style.color=binding.value;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? }
例如下面將用自定義redirective實(shí)現(xiàn)拖拽:
<div id="out">
????<h1>拖拽</h1>
????<p class="a"></p>//能拖拽的標(biāo)簽,我沒有寫它的樣式
????<p class="a"></p>
????<p class="a"></p>
</div>
</body>
<script>
// 這定義的是全局的自定義指令
// Vue.directive('move',function(a){
????????// a.onmousedown = function(e){
????????// var x = e.clientX;
????????// ? var y = e.clientY;
????????// document.onmousemove = function(){
????????????????????// }
????????????????// document.onmouseup = function(){
????????????????????// }
? ? ? ? ? ? ? ?// }
// })
var vm = new Vue({
????????????el:'#out',
????????????????data:{
},
methods:{
},
//direvtives:('自定義的名字'煤禽,function(e){函數(shù)里面的參數(shù)指是dom元素本身
})
????????directives:('move',function(e){//局部? ? ?
????????????????????a.onmousedown = function(e){
????????????????????var x = e.clientX;
????????????????????? var y = e.clientY;
????????????????????????document.onmousemove = function(){
????????????????????????}
????????????????????document.onmouseup = function(){
????????????????????????????}
????????????????}
????????????})
})