0

Извините, если заголовок неправильный, потому что я не мог определить лучший заголовок для него. Вы можете изменить его, если вы хотитеng-annotate control dependency name

Constant Файл

/* 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']; 

Но когда я запускаю нг-аннотирования CmdLine (нг-аннотировать --single_quotes --add routeHelper.js -o routeHelper.js), он создает следующие

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

Вы можете увидеть различие с ng-annoate выплевывает «_» вместо «lodash».

Вопрос

как я могу контролировать нг-annoate не заменить «lodash» с «_»

ответ

1

нг-аннотировать пытается быть умным, насколько это возможно, но он не может читать ваши мысли! :-) Если у вас есть другое имя для вашего параметра, чем введенная служба/константа/прочее, вам просто нужно указать массив $ inject для запуска программы. Если вы этого не сделаете, программа не будет запущена (уменьшена или нет).

Итак, вы должны это сделать, а затем просто добавить массив $ inject вручную. ng-annotate оставит его неповрежденным до тех пор, пока вы запустите его с --add, а не --add --remove.

+0

Спасибо olov .. Ручная установка для инъекций работает отлично. Идея состоит в том, чтобы сделать ее автоматической и по-прежнему избегать замены «lodash» на «_» – Chief

+1

Либо: 1. 'angular.module (foo) .constant (« lodash », _), то функция routeHelper (lodash) {}' или 2. 'angular.module (foo) .constant (" _ ", _), то функция routeHelper (_) {}' или 3. предоставляет явные массивы аннотаций. – olov