角度资源节约承诺

时间:2015-09-14 18:25:13

标签: javascript angularjs angular-promise angularjs-ng-resource

我正在努力解决angular $resource保存的承诺。

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

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

这适用于get,但是,当我尝试访问保存时的promise时,我收到错误。我做错了什么以及为什么解决保存工作的方式不同于解决get?

注意: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);
});

1 个答案:

答案 0 :(得分:0)

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

var saveResult = itemService.saveItem(item);

saveResult.then(function(itemDef) { ... });
相关问题