ng-annotate控件依赖名称

时间:2014-09-24 06:52:18

标签: javascript angularjs model-view-controller dependency-injection bundling-and-minification

如果标题错误,我很抱歉,因为我无法找到最佳标题。如果你想

,你可以改变它

常量文件

/* global lodash:false */
(function () {
    'use strict';

    angular
        .module('blocks.router')
        .constant('lodash', _);  
})(); 

routerHelper.js文件

 /* @ngInject */

function routeHelper($location, $rootScope, $state, _, logger, routeHelperConfig)

 routeHelper.$inject = ['$location', '$rootScope', '$state', '_', 'logger', 'routeHelperConfig'];

问题

手动注入依赖项工作正常。

routeHelper.$inject = ['$location', '$rootScope', '$state', 'lodash', 'logger', 'routeHelperConfig'];

但是当我运行ng-annotate cmdline( ng-annotate --single_quotes --add routeHelper.js -o routeHelper.js )时,它会创建以下

routeHelper.$inject = ['$location', '$rootScope', '$state', '_', 'logger', 'routeHelperConfig'];

你可以看到与ng-annoate吐出的差异' _'而不是' lodash'。

问题

如何控制ng-annoate不能取代' lodash'与' _'

1 个答案:

答案 0 :(得分:1)

ng-annotate尝试尽可能聪明,但它无法读懂你的想法! :-)如果您的参数名称与注入的service / constant / whatever不同,那么您只需为要运行的程序指定$ inject数组。如果你不这样做,程序就不会运行(缩小与否)。

所以,如果你必须这样做,那么只需手动添加$ inject数组。 ng-annotate只要您使用--add而不是--add --remove运行它,就会保持完整。