通過(guò)dialog插件學(xué)習(xí)angular指令開發(fā)

? ? angularJs是google為簡(jiǎn)化web應(yīng)用開發(fā)所研發(fā)出一套MVVM的前端開發(fā)框架,小明在學(xué)習(xí)過(guò)程中遇到最難一點(diǎn)就是其插件開發(fā)(或者說(shuō)是指令),這里通過(guò)一個(gè)簡(jiǎn)單Dialog對(duì)話框例子來(lái)簡(jiǎn)單講一下angular 指令的幾個(gè)重要知識(shí)點(diǎn)。


項(xiàng)目結(jié)構(gòu)非常簡(jiǎn)單,一個(gè)css文件來(lái)控制dialog插件樣式,一個(gè)js文件來(lái)寫插件的邏輯和視圖模板,另外外部調(diào)用插件的方法寫在了demo里。

首先我們通過(guò)app.directive方式來(lái)聲明插件名

比如:app.directive("angularDialog",function(){}) ,我們聲明了一個(gè)叫angularDialog的指令。

我們將所有邏輯寫到后面回調(diào)函數(shù)中。

這里我們看到了有個(gè)叫restrict屬性,restrict 的取值可以有三種,A代表Attrribute,E表示element,C表示class,一般實(shí)際項(xiàng)目中我們只會(huì)使用A或E,即在html調(diào)用為<angular-dialog></angular-dialog>或

<div angular-dialog></div>


template作用是將視圖模板渲染出來(lái)


link簡(jiǎn)單來(lái)說(shuō)是當(dāng)directive被angular 編譯后,執(zhí)行該方法,function中可以傳三個(gè)參數(shù)scope(當(dāng)前組件的作用域,element只當(dāng)前的dom對(duì)象,此處為angular-dialog,attrs指當(dāng)前指令所綁定attributes),我們將指令內(nèi)部的數(shù)據(jù)綁定和方法調(diào)用都寫到link中。

scope屬性是這里最難理解的



通過(guò)這個(gè)例子我們可以看到scope中有三個(gè)屬性@,&,=,&最好理解,我們將外部方法綁定到插件內(nèi)部,用&符號(hào)就可以了哇,這里我們外部有一個(gè)fun方法,通過(guò)&就能在指令內(nèi)部去調(diào)用這個(gè)fun方法,@和=作用都是數(shù)據(jù)綁定,區(qū)別在于@是單向的,=是雙向的,從這個(gè)例子中我們可以很清晰看出我們將標(biāo)題和內(nèi)容傳遞到模板中通過(guò)@方式即可,但是我們通過(guò)外部事件變更指令內(nèi)部狀態(tài)則必須使用=。

angularjs指令非常強(qiáng)大,這里只是講了個(gè)皮毛,最后放上demo

https://github.com/minerchow/angularDialog

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容