0

죄송합니다. 제목이 잘못되어 가장 좋은 제목을 찾을 수 없어서 죄송합니다. 당신이 수동으로 종속성을 주입ng-annotate 제어 종속성 이름

/* @ngInject */ 

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

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

문제

가 잘 작동 파일

상수 파일에

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

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

routerHelper.js를 원하는 경우 변경할 수 있습니다.

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

하지만

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

을 다음 NG-주석있는 CmdLine (NG-주석을 --single_quotes --add routeHelper.js -o routeHelper.js)이 생성을 실행하면 당신은 볼 수 있습니다 ng-annoate가 'lodash'대신 '_'을 뱉어내는 것과의 차이.

질문

어떻게 '_'

답변

1

NG-주석을 가능한 한 스마트 시도로 'lodash'을 대체 할 수있는 NG-annoate 제어 할 수 있지만, 당신의 마음을 읽을 수 없습니다! :-) 삽입 된 서비스/상수/무엇이든지간에 매개 변수의 이름이 다른 경우 프로그램 실행을 위해 $ inject 배열을 지정하기 만하면됩니다. 그렇지 않으면 프로그램이 실행되지 않습니다 (축소되거나 축소되지 않음).

이렇게해야 할 경우 $ inject 배열을 수동으로 추가하십시오. ng-annotate는 --add이 아니고 --add --remove이 아닌 한 실행합니다.

+0

감사합니다. 수동 주입 배열이 정상적으로 작동합니다. 자동적으로 'lodash'('_')로 대체하지 않는 것이 좋습니다. – Chief

+1

다음 중 하나를 사용하십시오 : 1. angular.module (foo) .constant ("lodash", _) then function routeHelper (lodash) {}' 'angular.module (foo) .constant ("_", _) 그리고 routeHelper (_) {}'또는 3. 명시 적 주석 배열을 제공하십시오. – olov