基于这个线程,我实现了以下(使用 Restangular):
app.factory('Account', function(Restangular) {
var _account;
return {
get: function(id, success, failure) {
// If we've already retrieved an account, return that
if (angular.isDefined(_account)) {
console.log('local');
success(_account);
// Otherwise request the resource and store it for subsequent requests
} else {
console.log('server');
Restangular.one('accounts', id).get().then(
// Success
function(account) {
_account = account;
success(_account);
},
// Failure
function(response) {
if (angular.isDefined(failure)) {
failure(response);
}
}
);
}
}
}
});
我在我的控制器中这样使用它:
Account.get(1, function(account) {
$scope.account = account;
});
问题是因为调用是异步的,所有调用检查 _account 并发现它为空,因此进行服务器调用,然后我得到 a) 对同一事物的多个服务器调用和 b) 未链接的模型。
如果我更改代码以立即返回“承诺”,我发现我无法编辑与 ng-model 绑定的任何文本字段。
有没有办法解决?难道我做错了什么?据我所知,原始线程应该遇到同样的问题..?