1

같은 모듈에 정의 된 값을 참조하는 방법 :AngularJS와 - 나는 두 .value 조리법을 포함하는 구성 모듈을 쓰고 있어요

  • base을을
  • base을 위에 이동 REST API를 URL을 다수

나는 현재 .value 이러한 설정했지만 나는 모든 재 작성할 필요없이 base을 변경할 수 있기를 원하기 때문에 그들은 단지 쉽게

.constant 수 나는 변수를 테스트 할 때

var configuration = angular.module('configuration', []); 

configuration.value('Config',{ 
    baseURL : 'http://dev.mysite.com/',  // define Base URL 
}); 

configuration.value('ApiList', { 
    getMyDataLink1 : this.baseURL + 'rest/folder1/action1/api_key/', 
    getMyDataLink2 : this.baseURL + 'rest/folder2/action2/api_key/', 
    getMyDataLink3 : this.baseURL + 'rest/folder3/action3/api_key/', 
}); 

: http://dev.mysite.com/로 제대로

  • Config.baseURL 출력을
  • ApiList.getMyDataLink1은 절반 동일한 모듈에 - API URL은 난 그냥 정의한 base을 참조 할 필요가 this.baseURL 부분이 정의되지 않았기 때문에 정의 됨 (즉, undefinedrest/folder1/action1/api_key/을 출력 함)

나는 또한 같은 ApiList의 .value를 정의하는 시도했습니다

getMyDataLink1 : Config.baseURL + 'rest/folder1/action1/api_key/', 
//or 
getMyDataLink1 : baseURL + 'rest/folder1/action1/api_key/', 

하지만, 그 중 하나는 "catch되지 않은 오류 ReferenceError을 : XXXX는 정의되지 않은"줄

는 것이 가능을 참조하는 것입니다 ... 오류가 발생했습니다. 같은 모듈 내의 다른 .value 값?

편집 : 이 http://jsfiddle.net/goredwards/yy5xuodh/

가 EDIT2 참조 : 나는 .factory에 2 .value를 변환 한 http://jsfiddle.net/goredwards/xvj5xcgz/ 참조 - 후 바이올린의 맨 아래에있는 JS-유일한 방법 비교를 -이 있어야합니다 이것보다 더 간결한 방법!

답변

0

는 (A 유지 보수의 관점에서) 짧고 명확한 방법 때문에 .value 조리법에 무엇을 주입하는 것이 가능하지 않는 것 내가 찾은는 접합하는 변환하는 것입니다 .value .factory 조리법에 (2 일 예) 제조법하고 '구성'.value 변수 주입 :이 작동하는 동안

var configuration = angular.module('configuration', []); 

configuration.value('Config',{ 
    baseURL : 'http://dev.mysite.com/',  // define Base URL 
}); 

configuration.factory('ApiList', ['Config', function(Config){ 
    return{ 
     getMyDataLink1 : Config.baseURL + 'rest/folder1/action1/api_key/', 
     getMyDataLink2 : Config.baseURL + 'rest/folder2/action2/api_key/', 
     getMyDataLink3 : Config.baseURL + 'rest/folder3/action3/api_key/' 
    }; 
}]); 

이 (http://jsfiddle.net/goredwards/xvj5xcgz/ 참조), 그리고 이 상대적으로, 그것은 & 명확하지 간결하다 이상한 것처럼 보입니다. 값은 단순히 다른 .values에 연결될 수 없습니다.

0

구성을 ApiList에 주입 해 보았습니까?

 configuration.value('ApiList', function(Config) { 
      getMyDataLink1 : Config.baseURL + 'rest/folder1/action1/api_key/', 
      getMyDataLink2 : Config.baseURL + 'rest/folder2/action2/api_key/', 
      getMyDataLink3 : Config.baseURL + 'rest/folder3/action3/api_key/', 
     }); 
+0

감사합니다.하지만 작동하지 않는 것 같습니다. 방금 추가 한 jsfiddle를 참조하십시오. 링크는 원래 코드를위한 것이지만 변경 사항을 추가하면 '구성'모듈이 손상됩니다. – goredwards

0

필자가 아는 한 다른 값에 값 종속성을 삽입 할 수 없습니다. 서비스 또는 팩토리를 사용하여 API URL을 작성할 수 있습니다. 이런 식으로 뭔가 : Gaurav는 지적

configuration.value('Config',{ 
    baseURL : 'http://dev.mysite.com/',  // define Base URL 
}); 

configuration.value('ApiList', { 
    getMyDataLink1 : 'rest/folder1/action1/api_key/', 
    getMyDataLink2 : 'rest/folder2/action2/api_key/', 
    getMyDataLink3 : 'rest/folder3/action3/api_key/', 
}); 

app.service('URLService', ['Config', 'ApiList', function(Config, ApiList){ 
    return { 
    getURLs : function() { 
     var url = Config.baseURL+ApiList.getMyDataLink1; 
     return url; 
    } 
}}]); 
+0

Gaurav에게 감사드립니다. 제 2의 .value 제조법을 공장으로 변환하십시오 - http : // jsfiddle 참조.net/goredwards/xvj5xcgz/- 기존 선언 된 변수에 연결할 수있는 pure_js 메서드와 비교하면 오랜 시간이 걸릴 것 같습니다. – goredwards

관련 문제