2013-10-18 106 views
0

正如標題所要求的那樣。他們是否相反? 另外,如何根據名稱從$rootScope中刪除事件?

一個簡單的例子也是受歡迎的。

回答

3

$destroy既是每個範圍都會偵聽的事件,也是手動觸發該事件的範圍方法。

它主要用於在該範圍被破壞時執行所需的任何操作。範圍被破壞的實例有:

  1. 通過ng-view切換視圖,前一個控制器作用域被破壞。
  2. 一個指令被實例化,並且該元素從DOM中被移除,這適用於角度框架和自定義內的所有指令。

而另一方面$broadcast只是用來觸發當前級別或子級別的事件scope

他們不是相反的。

對於如何從$ rootScope中刪除事件的第二個問題。

比方說,你已經細化事件偵聽器:

$rootScope.$on("myEvent", function() { 
//some code 
}); 

每個事件偵聽器返回deregister功能。每當你要刪除的事件監聽器只要調用deregister功能

var removeMyEvent = $rootScope.$on("myEvent", function() { 
//some code 
}); 

:所以,你可以使用類似。

removeMyEvent(); 

這應該做的伎倆!

+1

太棒了,謝謝! – Diolor

相關問題