2013-03-01 5 views
7

AngularJS에서 설정 파일을 설정하고 있습니다. AnglesJS에서 키를 덮어 쓸 수없는 팩토리를 만들 수 있습니까? 예를 들어, 이렇게 상수를 설정할 수 있습니다. 덮어 쓸 수 없습니다.AngularJS "Constant"Factory

module.constant ('animals', { "cat": "meow", "dog": "woof"});

하지만 덮어 가능하지만 공장 자체

module.value('catSound','meow') 
     .value('dogSound','woof') 
     .factory('animals', ['catSound','dogSound', function(catSound, dogSound) { 
      return { 
       "cat": catSound, 
       "dog": dogSound 
      } 
     }); 

위 공장 module.factory('animals',function(){ return 7 })을하는 코드의 또 다른 조각을 허용 덮어 쓸 수 같은 것을 할 싶습니다 모든 것을 망가뜨려 라. 그러나 공장에서 개별 값 (덮어 쓰기 가능) 일 수 있으므로 module.value('catSound','hiss')을 할당하고 예상대로 작동해야합니다.

나는 상수에 주입하려고 시도했지만 가능한 한 이해할 수 없었습니다. 내 공장 신고서를 덮어 쓰지 않도록하려면 어떻게해야합니까? 나는 상수 인이 내가 원하는 것을 설명 할 때 아마도 정확한 용어가 아니지만, 공장의 함수 정의을 일정하게하고 싶습니다.

+0

유스 케이스에 대해 약간의 통찰력을 제공 할 수 있습니까? 공장을 덮어 쓰면 테스트에 대한 조롱과 같은 큰 이점이 있습니다. –

+0

필자는 기본적으로 복사 할 수 있고 매개 변수가 개별 서버의 요구에 맞게 수정 된 기본 구성 파일을 설정하려고합니다. 즉, 기본적으로 개발 API를 가리키는 API URL이 필요하지만 프로덕션 서버는 프로덕션 API를 가리 키기를 원할 것입니다.) 아이디어는 하나의 파일에 _all_ 구성 값을 유지하여 개발자가 로컬 구성에서 실수로 출고시의 출력을 변경하는 것을 방지하면서 기본값을 간단하게 업데이트하도록했습니다. 'value()'는 개별 변경을 허용합니다. 더 좋은 방법이 있다고 확신합니다. –

+0

문제에 대한 해결책을 찾았습니까? 나는 지금도 같은 문제를 다루고있다. –

답변

2

모든 것이 자바 스크립트에서 변경할 수 있으므로 이와 같은 설정은 까다 롭고 절대 안전하지는 않습니다. 저는 각진 코드를 둘러 보았고 당신이 요구하는 것처럼 보이는 보호 메커니즘에 대한 어떠한 시도도 발견하지 못했습니다.

위험으로 살기 만하면됩니다. 검사와 멋진 긴 이름 외의 자신을 보호 할 가치가 없습니다. 나는 당신이 한번 물린 적이 있다고 생각하지만, 당신이 매우 짧은 이름으로 공장을 정의하지 않는다면 기회가 아주 낮다고 생각합니다.

+2

부여되었지만'Object.seal()'과 setter와 같은 것들은 어느 정도의 보호를 제공 할 수 있습니다. 'module.constant()'는 동일한 메소드를 두 번 이상 사용하여 항목을 덮어 쓰지 못하도록하기 때문에'module.factory()'정의를 위해 이미 비슷한 것을 기대하고있었습니다. –

+0

@IanHunter 예, 동의했습니다. 나는 지금 당장은 아무 것도 없다고 생각합니다. 그래서 당신도 직접해야하거나하지 않고 살아야합니다. – iwein