一、什么是全局API?
說的簡單些就是,在構(gòu)造器外部用Vue提供給我們的API函數(shù)來定義新的功能。
二、Vue.directive自定義指令
比如自己定義一個v-qiang的指令
例子如
<div >
<mu-ripple class="mu-ripple-demo demo-3" color="red" :opacity="0.5">
<p v-qiang="color" >Click Me</p>
</mu-ripple>
</div>
</template>
<script>
import Vue from 'vue'
Vue.directive('qiang',function(el,binding){
console.log('el -----'+el);
console.log('name就只自定義命令名字 -----'+binding.name);
console.log('value得到值 -----'+binding.value);
console.log('expression得到變量名字 -----'+binding.expression);
el.style='color:'+binding.value;
});
export default {
name: 'Game',
data () {
return {
color:'red',
}
}
}
</script>
三、自定義指令中傳遞的三個參數(shù)
el: 指令所綁定的元素,可以用來直接操作DOM。
binding: 一個對象,包含指令的很多信息。
vnode: Vue編譯生成的虛擬節(jié)點
四、自定義指令的生命周期
自定義指令有五個生命周期(也叫鉤子函數(shù)),分別是 bind,inserted,update,componentUpdated,unbind
bind:只調(diào)用一次,指令第一次綁定到元素時調(diào)用,用這個鉤子函數(shù)可以定義一個綁定時執(zhí)行一次的初始化動作。
inserted:被綁定元素插入父節(jié)點時調(diào)用(父節(jié)點存在即可調(diào)用,不必存在于document中)。
update:被綁定于元素所在的模板更新時調(diào)用,而無論綁定值是否變化。通過比較更新前后的綁定值,可以忽略不必要的模板更新。
componentUpdated:被綁定元素所在模板完成一次更新周期時調(diào)用。
unbind:只調(diào)用一次,指令與元素解綁時調(diào)用。
template>
<div >
<mu-ripple class="mu-ripple-demo demo-3" color="red" :opacity="0.5">
<p v-qiang="color" >Click Me</p>
</mu-ripple>
</div>
</template>
<script>
import Vue from 'vue'
Vue.directive('qiang',{
bind:function(){//被綁定
console.log('1 - bind');
},
inserted:function(){//綁定到節(jié)點
console.log('2 - inserted');
},
update:function(){//組件更新
console.log('3 - update');
},
componentUpdated:function(){//組件更新完成
console.log('4 - componentUpdated');
},
unbind:function(){//解綁
console.log('1 - bind');
}
});
export default {
name: 'Game',
data () {
return {
color:'red',
}
}
}
</script>