我有幾個關於Angular的問題,如果有人爲我清除它,我會非常感激。
我知道如何在角在控制器和指令的情況下作用域的工作,但他們什麼時候破壞($銷燬被觸發時)我很困惑。如果有人能夠對Angular中的示波器的生命週期有所瞭解,那就太好了。
假設我有一堆控制器和指令在我的應用程序。當它們中的每一個被加載並卸載到存儲器中時。有人能告訴我更多關於控制器和指令的生命週期嗎?
問候。
我有幾個關於Angular的問題,如果有人爲我清除它,我會非常感激。
我知道如何在角在控制器和指令的情況下作用域的工作,但他們什麼時候破壞($銷燬被觸發時)我很困惑。如果有人能夠對Angular中的示波器的生命週期有所瞭解,那就太好了。
假設我有一堆控制器和指令在我的應用程序。當它們中的每一個被加載並卸載到存儲器中時。有人能告訴我更多關於控制器和指令的生命週期嗎?
問候。
對於範圍的生命週期,請參考以下鏈接
http://onehungrymind.com/notes-on-angularjs-scope-life-cycle/
對於控制器的生命週期,請參考以下鏈接
What is the lifecycle of an AngularJS Controller?
希望它可以幫助...
當用AngularJS編譯器($compile
)編譯的DOM元素被銷燬時,emi ts $ destroy事件,可用於刪除指令或控制器,某些觀察者或事件偵聽器,這些事件可能導致內存泄漏。
當範圍被破壞?
例如,當您使用ngRoute更改路線時,您使用的控制器的範圍被破壞,並根據下一個路線控制器加載新的$scope
。
當$範圍被破壞的另一個例子是ngRepeat這破壞了剩餘的項目:
// remove leftover items
for (var blockKey in lastBlockMap) {
block = lastBlockMap[blockKey];
elementsToRemove = getBlockNodes(block.clone);
$animate.leave(elementsToRemove);
if (elementsToRemove[0].parentNode) {
// if the element was not removed yet because of pending animation, mark it as deleted
// so that we can ignore it later
for (index = 0, length = elementsToRemove.length; index < length; index++) {
elementsToRemove[index][NG_REMOVED] = true;
}
}
block.scope.$destroy();
}
我怎麼能摧毀一個$scope
由我自己?
使用$scope.$destroy();
當$範圍被破壞,會發生什麼?
的角發射$destroy
廣播事件,在這之後:禁用聽衆,觀察者和施加/消化該範圍的方法,以及然後執行默認$destroy
事件偵聽器作爲破壞這標誌着範圍。