2013-01-24 2 views
2

구성을보고 사용할 템플릿을 결정하는 지시문이 있습니다. 그것은 잘 작동했습니다. 난 그냥 설정 값을 사용하여 객체를 반환 된 구성 서비스가 있고, 나는 이런 식으로 뭔가 한 : 최근 문제가 도입AngularJS 지시문에서 비동기 구성 사용

if (Config.Values.ReleaseVersion < 1.0) { 
    template = 'partials/pagebeta.html'; 
} 
else { 
    template = 'partials/page.html'; 
} 
templateUrl: template 

합니다. My Config 서비스는 json 파일에서 값을 가져와야합니다. 이제 config를 가져 오는 것이 비동기이므로 Config 서비스에서 약속을 다시 전달합니다. 이것은 내 지시어에서 저를위한 문제를 만들고 있습니다 - 나는 이것을 할 수 없습니다 :

var template; 
Config.then(function(config) { 
    if (config.Values.ReleaseVersion < 1.0) { 
    template = 'partials/pagebeta.html'; 
    } 
    else { 
    template = 'partials/page.html'; 
    } 
}); 
templateUrl: template 

어떤 제안이라도 감사드립니다!

답변

2

당신의 templateUrl 비동기 더 이상 지시어의 templateUrl 속성을 사용할 수 없습니다 계산 된 값에 의존하고, 즉 $http$compile 낮은 수준의 API를 사용 할 의무됩니다.

대략적으로 (연결 기능에서만 가능) $http을 사용하여 템플릿의 콘텐츠를 검색 한 다음 ($templateCache을 포함하는 것을 잊지 마세요!) 템플릿의 콘텐츠를 "수동으로"컴파일하십시오.

많은 일을하는 것처럼 들리 겠지만 실제로는 오히려 간단합니다. 나는이 패턴이 사용 된 지시어 sources을 살펴볼 것을 제안 할 것이다.

+0

이렇게하면됩니다. 감사! – Cork

관련 문제