我在每個控制器中獲得了以下工作。
$scope.$on('$routeChangeStart', function(event){
$scope.closeitup();
});
,並在每個控制器我有一個closeitup()
功能,做不同的事情,但具有相同的名稱。
我如何可以移動上述$scope.$on
到將要發射的服務和呼叫控制器closeitup()
希望這個問題是非常明顯的
我在每個控制器中獲得了以下工作。
$scope.$on('$routeChangeStart', function(event){
$scope.closeitup();
});
,並在每個控制器我有一個closeitup()
功能,做不同的事情,但具有相同的名稱。
我如何可以移動上述$scope.$on
到將要發射的服務和呼叫控制器closeitup()
希望這個問題是非常明顯的
myModule.factory('closeitupOnRouteChangeStart', function() {
return function($scope) {
$scope.$on('$routeChangeStart', function() {
$scope.closeitup();
});
};
});
,並在控制器:
myModule.controller('SomeCtrl', function($scope, closeitupOnRouteChangeStart) {
closeitupOnRouteChangeStart($scope);
});
雖然我不確定這會使代碼更乾淨和更具可讀性。
它不工作,它說'TypeError closeitupOnRouteChangeStart不是一個函數' – user3052526
對不起,完美 – user3052526
怎麼樣使用$控制器繼承?通過SalmanPK
改編自this answer
app.controller('ParentCtrl ', function($scope) {
$scope.$on('$routeChangeStart', function(event){
$scope.closeitup();
});
});
app.controller('ChildCtrl', function($scope, $controller) {
$controller('ParentCtrl', {$scope: $scope});
});
我沒有嘗試這個,但我想將代碼移動到一個服務。謝謝,雖然我會研究'$ controller',因爲我不知道它 – user3052526
如果你只是需要封裝某個地方的邏輯,控制器繼承聽起來不錯。 如果不是,請嘗試「JB Nizet」答案,如果它解決了您的問題,請給他接受的狀態。 :d – ElMesa
你還可以發佈'closeitup()'函數,以便我們可以看到它們之間的區別嗎? –
這是不同的代碼在每個控制器,但作爲一個例子:$ scope.closeitup =函數(){一些$ http調用} – user3052526