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

obe*_*ger 4 javascript annotations dependency-injection angularjs

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

angular.module('base.controllers')
        .controller('RandomeCtrl',
                ['$scope', '$routeParams', ...,
                    function($scope, $routeParams, ...) { 
Run Code Online (Sandbox Code Playgroud)

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

angular.module('base.controllers')
        .controller('RandomeCtrl', 
                    function($scope, $routeParams, ...) {
Run Code Online (Sandbox Code Playgroud)

但是,在主要项目中,如果代码被重复使用或(喘气)剪切和粘贴,无论是单独使用还是作为一组控制器,我喜欢我未来的自我警告,以及其他开发人员添加/* @ngInject */注释的警告.像这样:

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

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

小智 10

没必要害怕!/*@ngInject*/是一种告诉ng-annotate你希望它注释某段代码的方法.如果它已经弄明白了,/*@ngInject*/不会让它做任何额外的事情而且完全无害.