내 Angular 지시어에 현재 로그인 한 사용자의 ID와 사용자 이름을 사용 가능하게 만들고 싶습니다. 이 정보를 검색하기위한 API 끝점을 만들었습니다 (다른 정보와 함께).AngularJS - 비동기 데이터가 포함 된 종속성 주입
문제는 API 호출이 비동기라는 것이다 : 나는 API에 의해 반환 된 JSON 객체를 반환하는 공장을 만들려고하고
var url = baseUrl + 'api/sessions';
$http.get(url)
. 그러나 호출이 비동기 적이기 때문에 factory 메소드를 구현하는 방법을 모르겠습니다.
또한 값이 API에서 반환 될 때까지 지시문을 인스턴스화하고 싶지 않습니다. AngularJS에 내장 된 메커니즘을 통해 비동기 호출이 먼저 반환되는지 확인하거나 호출이 반환 될 때 (JSON 객체 사용) 전역 객체를 만들고 값을 업데이트해야합니까?
application.factory('session', ['$http', 'baseUrl', function ($http, baseUrl) {
var session = {};
var url = baseUrl + 'api/sessions';
var promise = $http.get(url)
.success(function (data) {
for (var key in data) {
session[key] = data[key];
}
});
return session;
}]);
문제는이 채워지기 전에 종속 지시어는 세션 객체를 검색하는 것입니다 :
이 내가 현재 가지고있는 것입니다. API 호출에 오랜 시간이 걸리면 세션 객체는 사용자가 사용할 때 초기화되지 않을까 걱정됩니다.
$ 방송을 확인하십시오. 공장 값이 변경되고 컨트롤러/지시문에 통보해야 할 때 유용합니다. –