Angular资源保存承诺

Angular Resource Save Promise

本文关键字:承诺 保存 资源 Angular      更新时间:2023-09-26

我试图从angular $resource save中解析一个承诺。

文档指定我可以通过返回对象的$promise属性访问原始的$http承诺,如下所示:

var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123})
    .$promise.then(function(user) {
      $scope.user = user;
    });

这适用于get,但是,当我试图访问保存上的承诺时,我得到一个错误。我做错了什么?为什么解决保存和解决获取的工作方式不同?

注意:POST请求正在工作,我可以在浏览器的网络工具中看到从服务器返回的正确响应。我只是无法访问承诺中的结果。

In My Service

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);
}

In My Controller

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);
});

您需要直接调用保存响应的then方法:

var saveResult = itemService.saveItem(item);
saveResult.then(function(itemDef) { ... });