我正在尝试创建一个 Angular js 服务,如果需要更新,它将从服务器获取数据,如果没有更新,则返回缓存的数组。在这两种情况下,服务都应该返回一个promise
. 服务代码:
getLikesForMe = function() {
var defer = $q.defer(), prom = defer.promise;
if (angular.isUndefined(this.likesForMe) ||
updateStatus.likesForMe === true) {
var that = this;
prom = $http.get(API_URL + 'likes-to.json')
.then(function(result){
updateStatus.likesForMe = false;
that.likesForMe = result.data;
});
} else {
defer.resolve(this.likesForMe);
}
return prom;
}
当前控制器代码:
MainUser.getLikesForMe().then(function(result) {
$scope.likesList = result;
});
首选控制器代码:
$scope.likesList = MainUser.getLikesForMe();
但目前它仅在第二个函数 ( getLikesForMe()
) 调用后才有效,第一个 - 列表为空且“结果”变量为undefined
.
我是延迟对象的新手,我的英语很差,但我希望你明白错误在哪里。非常感谢!