2014-03-04 6 views
1

Google API에는 기본 텍스트, 다른 끝점 등과 같은 일련의 설정을 포함하는 끝점이 있습니다. 프론트 엔드는 AngularJS로 작성되었으며 고객에게 다시 돌려주고 애플리케이션의 모든 지시문에서 사용 가능하게하는 가장 좋은 방법을 찾으려고합니다. 지금 우리의 가장 좋은 방법은 지침으로 settings을 포함하는 것입니다 :서버에서 AngularJS 다운로드 설정

angular.module('ourapp') 
    .factory('settings', function ($http) { 
     var url = 'http://localhost:8080/settings'; 
     return function (callback){ 
      $http.get(url).success(callback); 
     }; 
    }); 

그러나 다른 모든 호출이 비동기 적으로 포장된다.

더 좋은 방법이 있나요?

+0

는이 문제에 대한 해결책을 찾았나요? – Mikke

+0

각도 외부에서 동기 XHTTP 호출을 수행하고 결과를 각도 전역 설정 개체에 바인딩했습니다. – Jason

답변

0

설정이 서버와 비동기 적으로 이루어지기 때문에 가용성은 본질적으로 비동기입니다. 논리가 사용 가능한 설정에 따라 다르면 약속을 사용하는 것보다 더 나은 해결책이 없을 것입니다.

컨트롤러를 인스턴스화하기 전에 약속을 해결하려면 $route을 사용할 수 있습니다. 그런 다음 컨트롤러에서 설정을 동 기적으로 사용할 수 있습니다.

언 래핑 약속을 시뮬레이션 할 수도 있습니다. 즉, 즉각적으로 (동 기적으로) 객체를 반환합니다. 나중에 객체가 실제 데이터로 채워집니다. 이는 스코프와 템플릿에 유용하며 이전에는 Angular 자체의 기능이었습니다. 설정 데이터가 없거나 없을 수도 있으므로 시뮬레이트 된 약속 해제 랩은 조심스럽게 사용하지 않으면 버그가 발생할 수 있음을 알아 두십시오.

예 :

angular.module('ourapp').factory('settings', function($http) { 
    var url = 'http://localhost:8080/settings'; 
    var settings = {}; 
    $http.get(url).success(function(data) { 
     angular.extend(settings, data); // fills in data from server 
    }); 
    return settings; // immediately (synchronously) returned 
});