2013-11-20 377 views
0

请看下面,这两个样本依赖注入基本上等于他们在做什么,或者我错过了我生命中重要的东西?AngularJS依赖注入植入方法

代码示例#1

angular.module("app", []); 
function Controller($scope, SomeService) { 
    // do stuff 
} 

Controller.$inject = ['$scope', 'SomeService'];  

代码示例#2

angular.module("app", []) 
.controller("Controller", [ '$scope', 'SomeService' function($scope, SomeService){ 
    // do stuff 
}]); 
+0

@musically_ut - 感谢 - 这是一个错字 – Iladarsda

回答

1

这两个代码段是不一样的。

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

+0

好一点,但我的问题是关于控制器$注入&依赖注入 – Iladarsda

+1

哦,那么它们是一样的。两者都可以避免缩小错误。 –

+0

我正在看这个更近一点。我不使用第一种语法,我想确保它是正确的 –