Angularjs文檔$控制器服務給$控制器業務使用量爲: $controller(constructor, locals);
使用情況在angularjs
任何人都可以關注一些光這2點:
- 當使用$控制器服務。請提供一些用例。
- 有關傳遞給它的'locals'參數的詳細信息。
Angularjs文檔$控制器服務給$控制器業務使用量爲: $controller(constructor, locals);
使用情況在angularjs
任何人都可以關注一些光這2點:
您可以創建要在$範圍內執行到一個控制器可以被命名爲'CommonCtrl'
常用功能。
angular.module('app',[]).controller('CommonCtrl', ['$scope', function($scope){
var self = this;
$scope.stuff1 = function(){
}
$scope.stuff2 = function(){
}
self.doCommonStuff = function(){
// common stuff here
$scope.stuff1();
$scope.stuff2();
};
return self;
}]);
,並注入該控制器在其他控制器讓說「TestCtrl1」像
angular.module('app',[]).controller('TestCtrl1', ['$scope','$controller', function($scope, $controller){
var commonCtrl = $controller('CommonCtrl',{$scope: $scope}); // passing current scope to commmon controller
commonCtrl.doCommonStuff();
}]);
這裏,由CommonCtrl需要在$控制器服務的第二個參數,我們傳遞的依賴關係。所以doCommonStuff方法將使用TestCtrl1控制器的作用域。
提一個,它在單元測試期間創建目標控制器很有用。
假設你有一個簽名爲.controller('MainCtrl', function($scope, serviceA){..})
的控制器。
在測試中,
// ...
beforeEach(inject(function ($rootScope, $controller, serviceA) {
// assign injected values to test module variables
scope = $rootScope.$new();
service = serviceA
// create the controller, by passing test module variables values as dependencies
$controller('MainCtrl', {'$scope': scope, 'serviceA': service});
}));
it('test on controller', function() {
//...
});
由於您無法真正注入控制器,並且您想在任何需要使用'$ controller'提供者的地方實例化控制器。一些信息[你可以在這裏找到](http://stackoverflow.com/questions/25417162/how-do-i-inject-a-controller-into-another-controller-in-angularjs/25417210#25417210) – PSL