真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

AngularJS動態(tài)菜單操作指令-創(chuàng)新互聯(lián)

前言 

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比瓦房店網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式瓦房店網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋瓦房店地區(qū)。費用合理售后完善,十載實體公司更值得信賴。

   在我們創(chuàng)建一個angularJS應(yīng)用的時候,菜單往往往是不可或缺的元素之一。也許在我們靜態(tài)菜單的時候不會發(fā)現(xiàn)在指令中操作菜單收縮、折疊展開沒有任何問題,因為我們在操作之前,頁面元素渲染已經(jīng)完成,所以在指令里面通過element查找目標(biāo)元素可以成功。但是一旦我們的菜單的數(shù)據(jù)不是靜態(tài)而是通過后臺接口加載動態(tài)數(shù)據(jù)渲染,我們會發(fā)現(xiàn)本來在靜態(tài)寫好的指令操作,在轉(zhuǎn)變?yōu)閯討B(tài)數(shù)據(jù)加載之后,怎么也沒法查找到想要的目標(biāo)元素。

   遇到如此問題,開始覺得好奇葩的,當(dāng)然這也是吐槽一下,還是得好好解決問題的,痛定失痛,決心好好理清思路,分析一下問題原因。首先我們先了解一下AngularJS的生命周期。

AngularJS的生命周期

   在AngularJS應(yīng)用啟動前,它們會以HTML文本的形式保存在文本編輯器中。應(yīng)用啟動后會進(jìn)行編譯和鏈接,作用域會同HTML進(jìn)行綁定,應(yīng)用可以對用戶在HTML中進(jìn)行的操作進(jìn)行實時響應(yīng)。AngularJS的生命周期主要有兩個主要階段:一個是編譯階段,一個是鏈接階段。

AngularJS生命周期-編譯階段

   在編譯階段,AngularJS會遍歷整個HTML文檔并根據(jù)JavaScript中的指令定義來處理頁面上聲明的指令。每一個指令模板中可能有另一個指令,另一個指令也有可能會有自己的模板。AngularJS調(diào)用HTML文檔根部的指令時,會遍歷其中所有的模板,模板中可能含有模板的指令。如果一個元素已經(jīng)有一個含有模板的指令,永遠(yuǎn)不要對其用另一個指令進(jìn)行修飾,只有最高優(yōu)先級的指令中的模板會被編譯。

   一旦對指令和其中的子模板進(jìn)行遍歷或編譯,編譯后的模板會返回一個叫做模板函數(shù)的函數(shù)。在這個時候的DOM樹還沒有進(jìn)行數(shù)據(jù)綁定,此時對DOM樹操作只會有很少的性能開銷,ng-repeat和ng-transclude等內(nèi)置指令會在這個時候?qū)€未進(jìn)行數(shù)據(jù)綁定的DOM進(jìn)行操作。比如ng-repeat,它會遍歷指定的數(shù)組或?qū)ο?,在?shù)據(jù)綁定之前構(gòu)建對應(yīng)的DOM結(jié)構(gòu),然后將新的DOM(編譯后的DOM)傳遞給指令生命周期中的下一階段,鏈接階段。一個指令的DOM一旦編譯完成,就可以立即通過編譯函數(shù)對其進(jìn)行訪問,編譯函數(shù)的簽名包含有訪問指令聲明所在的元素(tElements)及該元素對其他屬性(tAttrs)的方法。

   compile返回對象或函數(shù),compile()函數(shù)負(fù)責(zé)對模板DOM進(jìn)行轉(zhuǎn)換,link()函數(shù)負(fù)責(zé)將作用域和DOM進(jìn)行轉(zhuǎn)換。

//...
compile: function(tEle,tAttrs,transcludeFn){
 var tplEl = angular.element('
' +'

'+'
'); var h3 = tplEl.find('h3'); h3.attr('type',tAttrs.type); h3.attr('ng-model',tAttrs.ngModel); h3.val('hello'); tEle.replaceWith(tplEl); return function(scope, ele, attrs){ //連接函數(shù) }; } //...

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


分享題目:AngularJS動態(tài)菜單操作指令-創(chuàng)新互聯(lián)
新聞來源:http://weahome.cn/article/peiih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部