这两个代码段是不一样的。
angular.module("app", []);
function Controller($scope, SomeService) {
// do stuff
}
Controller.$inject = ['$scope', 'SomeService'];
尽管它宣称的app
模块存在不加控制到模块空间(namespace)app
。另外,我不认为这个代码会运行。请参阅下文了解如何使用这种注射方式。
angular.module("app", [])
.controller("Controller", [ '$scope', 'Service' function($scope, SomeService){
// do stuff
}]);
第二种形式使用速记.controller()
方法来创建所述控制器和注入的资源。然后您可以将angular.module('app')
拉到指定控制器的引用。
手动注入到控制器中遵循这个风格:
angular.module('app', [])
.factory('someService', function($window) {
return {
serve: function(text) {
$window.alert(text);
}
};
});
var injector = angular.injector(['app', 'ng']);
function Controller($scope, someService) {
$scope.doStuff = function() {
someService.serve('Doing stuff');
};
}
injector.instantiate(Controller);
对于一个完整的示例,请参阅:http://docs.angularjs.org/guide/di
@musically_ut - 感谢 - 这是一个错字 – Iladarsda