在 AngularJs 中,它的指令使用 directive ( name,factor_function)來實現(xiàn):
angular.module( 'myapp' ,[]).directive (myDirective,function (){ return{ template : '', restrict: '', replace: '', ........ }})除了內(nèi)置指令,Vue.js 也允許組件自定義指令。
+ 自定義指令提供一種機制將數(shù)據(jù)的變化映射為 DOM 行為
+ Vue.js 用 directive ( id,definition) 方法注冊一個全局的自定義指令
+ 自定義的指令接受兩個參數(shù): 指令 ID 與定義對象
+ 也可以用組件的 directives 注冊一個局部自定義指令 (此方法相當(dāng)于 AngularJs restrict 屬性為A)
1. 鉤子函數(shù)
+ 鉤子函數(shù)是 Windows 消息處理機制的一部分
+ 通過設(shè)置“鉤子”,應(yīng)用程序可以在系統(tǒng)級對所有消息、事件進行過濾,訪問在正常情況下無法訪問的消息。
+ 鉤子的本質(zhì)是一段用以處理系統(tǒng)消息的程序,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。
+ Windows 的鉤子函數(shù)可以認(rèn)為是 Windows 的主要特性之一。利用它們,您可以捕捉您自己進程或其它進程發(fā)生的事件。
+ 通過“鉤掛”,您可以給 Windows 一個處理或過濾事件的回調(diào)函數(shù),該函數(shù)也叫做“鉤子函數(shù)”,當(dāng)每次發(fā)生您感興趣的事件時,WINDOWS 都將調(diào)用該函數(shù)。
angularjs 提供了兩個函數(shù): compile 和 link ,其中編譯函數(shù)主要負(fù)責(zé)將作用域和 DOM 進行鏈接;鏈接函數(shù)用來創(chuàng)建可以操作 DOM 的指令
注意: compile 和 link 是互斥的,入如果同時設(shè)置這兩個選項,則會把 compile 返回函數(shù)當(dāng)做 link 函數(shù),而忽略 link 選項本身
Vue.js 同樣也提供了幾個鉤子函數(shù)都是可選的,相互之間沒有制約關(guān)系
鉤子函數(shù):主要負(fù)責(zé)將作用域和 DOM 進行鏈接;鏈接函數(shù)用來創(chuàng)建可以操作 DOM 的指令
+ bind — 只調(diào)用一次,在指令第一次綁定到元素上的時候調(diào)用,用這個鉤子函數(shù)可以定義一個在綁定時執(zhí)行一次的初始化動作
inserted — 被綁定元素插入父節(jié)點時調(diào)用(父節(jié)點存在即可調(diào)用,不必存在于 document 中)
update — 在 bind 之后立即以初始值為參數(shù)第一次調(diào)用,之后每當(dāng)被綁定元素所在的模板更新時調(diào)用,而不論綁定值是否變化。通過比較更新前后的綁定值,可以忽略不必要的模板更新,參數(shù)為新值與舊值。
componentUpdated — 被綁定元素所在模板完成一次更新周期時調(diào)用
unbind — 只調(diào)用一次,在指令從元素上解綁時調(diào)用
Vue.directive('my-directive', { bind: function(){ //做綁定的準(zhǔn)備工作 //比如添加事件監(jiān)聽器,或是其他只需要執(zhí)行一次的復(fù)雜操作 }, inserted: function(){ //... }, update: function(){ //根據(jù)獲得的新值執(zhí)行對應(yīng)的更新 //對于初始值也會調(diào)用一次 }, componentUpdated: function(){ //... }, unbind: function(){ //做清理操作 //比如移除bind時綁定的事件監(jiān)聽器 } })
新聞熱點
疑難解答
圖片精選