【问题标题】:ng-annotate control dependency nameng-annotate 控制依赖名
【发布时间】:2014-09-24 06:52:18
【问题描述】:

对不起,如果标题有误,因为我无法找出最好的标题。如果你愿意,你可以改变它

常量文件

/* 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' 替换为 '_'

【问题讨论】:

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


    【解决方案1】:

    ng-annotate 试图尽可能聪明,但它无法读懂你的想法! :-) 如果您的参数名称与注入的服务/常量/其他名称不同,那么您只需指定 $inject 数组即可运行程序。否则,程序将无法运行(无论是否缩小)。

    所以你必须这样做,然后手动添加 $inject 数组。只要您使用--add 而不是--add --remove 运行,ng-annotate 就会保持原样。

    【讨论】:

    • 感谢 olov .. 手动注入阵列工作正常。这个想法是让它自动化,仍然避免用“_”替换“lodash”
    • 任一:1.angular.module(foo).constant("lodash", _) then function routeHelper(lodash) {} 或 2.angular.module(foo).constant("_", _) then function routeHelper(_) {} 或 3.提供显式注释数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2018-10-22
    • 2014-03-30
    • 1970-01-01
    • 2022-11-20
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多