2016-08-26 22 views
0

我需要在整個module中爲所有controllers創建$scope以獲取和維護當前創建的$scope的信息,例如$id或任何其他信息。 我的工作代碼爲:AngularJS中是否有「創建控制器」的事件?

app.controller("myCtrl", function($scope, $rootScope){ 
    $rootScope.CurrentScopeID = $scope.$id; 
    // ... 
}) 

我想最大限度地集中這個邏輯,需要是否可以解決這個問題。

+0

不這樣做。使用'$ rootScope'是一種反模式,並且試圖將每個控制器上的變量設置爲相同的值是多餘的,容易出錯。如果您需要在多個控制器之間訪問的單值,請使用已經是單例的服務,並且完全是爲此目的而設計的。 – Claies

回答

0

我想補充一個初始化函數,你的控制器:一旦控制器被裝起來

var init = function(){ 
$rootScope.CurrentScopeID = $scope.$id; 
} 

init(); 

該代碼將運行!

+0

是的,當然這是一定程度上的解決方案,但不完全是因爲我必須在所有控制器中調用此方法。需要捕捉控制器創建的時刻,如C#事件,如果可能的話,如果不是你的答案將是完美的解決方案。 – Malkhaz

0

如果您使用的是角度版本1.5+,則會有生命週期掛鉤,這有助於在特殊時刻運行代碼。在你的情況下,你需要$onInit()階段。

這裏 - Lifecycle hooks in Components你可以找到更多關於這方面的信息。