2017-01-24 174 views
3

發現這個代碼在一個項目的指示我的工作之一:

element.on('$destroy', function() { 
    scope.$destroy(); 
}); 

需要該代碼?或者我可以刪除它?指令被銷燬後,範圍是否被銷燬?

+0

我在網站的子組件上使用類似的東西時,一些元素被我們的角度應用程序之外的父應用程序刪除,這只是摧毀一些綁定和偵聽器的方式 – maurycy

+0

我看到的唯一一點 - 如果這是另一個元素的範圍。這仍然是**,但可能會做點什麼。 –

+0

代碼正在調用另一個指令的編譯/追加,但我已將其刪除。 – jcubic

回答

1

記住,除非有您識別它的目的,實際上$destroy()去除它的父作用域範圍,下面是)正式文件的摘錄

$摧毀(; 從父範圍中刪除當前範圍(及其所有子範圍)。刪除意味着對$ digest()的調用將不再傳播到當前作用域及其子級。去除也意味着當前範圍有資格進行垃圾回收。

另請檢查此SO Thread例如和詳細的說明。

1

您不必編寫此代碼。

根據文檔,在兩種情況下會觸發$destroy事件。

  • 一個範圍破壞
  • 的元素從DOM

取出就在作爲一個側面說明只要之前,你仍然可以使用元素的scopeelement.on('$destroy')事件之前範圍將被銷燬:

element.on('$destroy', function() { 
    console.log('RIP', scope); 
});