2014-05-05 32 views
0

當我通過.when('/search/:searchString', {設置包含命名組的routeprovider時,爲每個不同的頁面加載:searchString它會加載分配的控制器的新實例。帶命名組的AngularJS routeprovider停止多個控制器實例

這使我有一個問題,當我有一個$rootScope.$on('searchUpdated',因爲它對每個控制器實例上的廣播消息作出反應。

有沒有辦法讓它只加載一個控制器,併爲每個請求使用相同的控制器,如果不是,有沒有辦法在頁面離開時銷燬控制器。

+1

控制器可能被銷燬,但在$ rootScope中註冊的監聽器不會去任何地方,因爲'$ rootScope'永遠不會被銷燬。你應該發佈更多的代碼,但問題似乎是你在每個**控制器實例的'$ rootScope'上註冊一個監聽器。 – gkalpak

+0

你在那裏有錢的權利。我在rootScope上擁有它:S很容易忽略。 – ozatomic

回答

1

對於任何面臨着類似的問題:

控制器被破壞,但註冊的偵聽器的$rootScope仍然存在,因爲$rootScope是永遠不會被破壞。

問題似乎是您在每個控制器實例的$rootScope上註冊了一個偵聽器。

相關問題