很抱歉,如果标题有误,因为我无法找出最好的标题。如果您愿意,可以更改它
常量文件
/* 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'];
问题
手动注入(inject)依赖项效果很好。
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”替换为“_”
最佳答案
ng-annotate 试图尽可能聪明,但它无法读懂你的想法! :-) 如果您的参数名称与注入(inject)的服务/常量/其他名称不同,那么您只需指定 $inject 数组即可运行程序。如果不这样做,程序将不会运行(无论是否缩小)。
所以如果您必须这样做,那么只需手动添加 $inject 数组即可。只要您使用 --add
而不是 --add --remove
运行它,ng-annotate 就会保持原样。
关于javascript - ng-annotate 控件依赖名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26010403/