通过ngInject和ng-annotate在AngularJS中双重注入

时间:2014-10-31 14:52:53

标签: javascript angularjs dependency-injection annotations

我正在使用Gulp为AngularJS应用程序构建我的主要javascript文件(app.js)。一切都很好,除了一件困扰我的小事。我正在使用ng-annotate自动解析我的角度js并添加依赖注入语法。所以我从这里开始(手动注射而不使用ng-annotate):

angular.module('base.controllers')
        .controller('RandomeCtrl',
                ['$scope', '$routeParams', ...,
                    function($scope, $routeParams, ...) { 

对此(将通过ng-annotate适当修改的代码):

angular.module('base.controllers')
        .controller('RandomeCtrl', 
                    function($scope, $routeParams, ...) {

然而,在重大项目中,如果代码被重复使用或(喘气)剪切和粘贴 单独或作为一套控制器,我喜欢对我未来的自我的警告 其他开发者,添加/* @ngInject */注释。像这样:

angular.module('base.controllers')
        .controller('RandomeCtrl', 
        /*@ngInject*/
                function($scope, $routeParams, ...) {

双注射阵列存在问题,如下所示:https://github.com/olov/ng-annotate/issues/28。然而,这似乎并不适用于相同的情况,我想知道是否存在双重注射的一个主要问题,我需要死心地害怕,我在网上找不到其他的后果。< / p>

1 个答案:

答案 0 :(得分:9)

无需害怕! /*@ngInject*/是一种告诉ng-annotate你希望它注释某段代码的方法。如果它已经知道了,/*@ngInject*/不会使它做任何额外的事情而且完全无害。