我想让当前登录的用户 ID 和用户名可供我的 Angular 指令使用。我创建了一个 API 端点来检索此信息(以及一些其他信息)。
问题是 API 调用是异步的:
var url = baseUrl + 'api/sessions';
$http.get(url)
我正在尝试创建一个工厂来返回 API 返回的 JSON 对象。但是,由于调用是异步的,我不知道如何实现工厂方法。
此外,我不想在值从 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调用需要很长时间,当用户使用它时,会话对象将未初始化。
您始终可以使用 ngIf 并等待满足要求。
<div ng-if="session" session-toolbox></div>
这样,一旦设置了会话,您就可以在 DOM 中使用指令会话工具箱。
但是,如果您在当前范围之外收集这些数据,那么您应该 $broadcast 自定义事件并在所需控制器内侦听该事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)