2017-08-02 31 views
0

有什麼方法可以獲得工作控制器列表嗎?我在我的工廠有一個對象,也有控制器,例如"myController"。所以我需要製作myFactory.object={}(使該對象爲空),如果此控制器從模塊斷開。Angularjs如何找出當前哪個控制器正在工作

+0

$ state.current.controller。這個怎麼樣? – anu

+0

可能的重複https://stackoverflow.com/questions/44153816/get-current-controller-in-use-in-angularjs – anu

+0

看看這個問題。它可能有幫助。 https://stackoverflow.com/questions/23382734/get-controller-name-from-scope – Chirag

回答

2

您可以使用它在你的控制,通知工廠的$scope約束$destroy事件。

一種選擇可能是這樣的:

.controller('MyController', ['$scope', 'MyFactory', function($scope, MyFactory) { 

    $scope.$on('$destroy', function() { 
    MyFactory.object = {}; 
    }) 

}]) 
+0

如果我使用controller作爲構造而不是$ scope,我可以寫'this。$ on ('destroy ....',對吧? – RoGGeR

+1

@RoGGeR編號'this'不是作用域,沒有$ on方法,除非你定義了它。$ scope應該在控制器中使用,最好的方法是[ $ onDestroy](https://docs.angularjs.org/guide/component)鉤子。 – estus

0

在工廠使用_invokeQueue獲得註冊的控制器,提供等

angular.module('myModule')['_invokeQueue'].forEach(function(valu‌e){ 
     console.log(value[2][0]) 
     if(value[2][0] === "myController"){ 
      myFactory.object={} // make the factory object null 
     } 
}) 
+0

什麼是函數參數'值'? – RoGGeR

+0

這是數組對象通過foreach傳遞 –

+0

對不起,我不明白它是如何正確工作的。你能詳細解釋一下嗎? – RoGGeR

相關問題