Javascript 角度资源节约承诺

Javascript 角度资源节约承诺,javascript,angularjs,angular-promise,angularjs-ng-resource,Javascript,Angularjs,Angular Promise,Angularjs Ng Resource,我正在努力解决save的一个承诺 文档指定我可以通过返回的对象上的$PROMITE属性访问原始$http PROMITE,如下所示: var User = $resource('/user/:userId', {userId:'@id'}); User.get({userId:123}) .$promise.then(function(user) { $scope.user = user; }); 这适用于get,但是,当我尝试访问save上的承诺时,会出现一个错误

我正在努力解决save的一个承诺

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

var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123})
    .$promise.then(function(user) {
      $scope.user = user;
    });
这适用于get,但是,当我尝试访问save上的承诺时,会出现一个错误。我做错了什么?为什么解决save工作与解决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);
});

您需要直接调用save响应上的
then
方法:

var saveResult = itemService.saveItem(item);

saveResult.then(function(itemDef) { ... });

你能创建一个演示吗?你使用的是什么角度版本?@dfsq我想创建一个plunkr,但我不知道如何创建一个我可以发布到的。如果你有任何想法,让我知道,我会发布一个例子。只需使用你的代码。请求是否失败并不重要。无论如何,您将看到代码是否抛出“无法读取未定义的属性”错误。@BenRipley,您可以在这里更改此错误,因为您的代码工作正常,
saveItem
返回带有属性的对象
$promise