0

對不起,如果標題是錯誤的,因爲我無法弄清楚它的最佳標題。如果你想ng-annotate控件依賴項名稱

恆文件

/* 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-註釋CMDLINE(NG-註釋--single_quotes --add routeHelper.js -o routeHelper.js)它會創建以下

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

你可以看到與ng-annoate不同的是吐出'_'而不是'lodash'。

問題

如何控制NG-annoate不與「_」

回答

1

NG-註釋試圖儘可能智能更換「lodash」,但它不能讀你的心! :-)如果您的參數名稱不同於注入的service/constant/whatever,那麼您只需指定$ inject數組即可讓程序運行。如果你不這樣做,程序將不會運行(縮小或不縮小)。

所以如果你必須這樣做,那麼只需手動添加$ inject數組。只要你用--add而不是--add --remove運行,ng-annotate就會保持不變。

+0

謝謝olov ..手動注入陣列工作正常。這個想法是使它自動化並且仍然避免用'_'替換'lodash' – Chief 2014-09-28 23:55:58

+1

要麼是:1.'angular.module(foo).constant(「lodash」,_)然後函數routeHelper(lodash){}或者2. angular.module(foo).constant(「_」,_)然後函數routeHelper(_){}'或者3.提供顯式的註釋數組。 – olov 2014-10-09 12:29:16