我正在尝试解决angular $resource save 的承诺。
文档指定我可以通过返回的对象上的 $promise 属性访问原始的 $http 承诺,如下所示:
var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123})
.$promise.then(function(user) {
$scope.user = user;
});
这适用于获取,但是,当我尝试访问保存时的承诺时,出现错误。我做错了什么,为什么解决保存工作与解决获取不同?
注意:POST 请求正在运行,我可以在浏览器的网络工具中看到服务器返回的正确响应。我只是无法访问承诺中的结果。
在我的服务中
var itemResource = $resource('/api/myUrl/:id/:action', { id: '@id', action: '@action' });
function getItem(id) {
return itemResource.get({ id: id });
}
function saveItem(item) {
return itemResource.save(item);
}
在我的控制器中
var getResult = itemService.getItem({ id: 1560 });
getResult.$promise.then(function (itemDef) { // THIS WORKS!!!
console.log(itemDef);
});
var saveResult = itemService.saveItem(item);
saveResult.$promise.then(function (itemDef) { // Cannot read property 'then' of undefined
console.log(itemDef);
});