3

angular $resource saveからの約束を解決しようとしています。

ドキュメントでは、次のように返されるオブジェクトの $promise プロパティを介して生の $http promise にアクセスできると指定されています。

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

これは get では機能しますが、保存時に promise にアクセスしようとすると、エラーが発生します。私は何を間違っていますか?また、保存の解決が取得の解決と異なるのはなぜですか?

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

1 に答える 1

0

then保存応答でメソッドを直接呼び出す必要があります。

var saveResult = itemService.saveItem(item);

saveResult.then(function(itemDef) { ... });
于 2017-07-06T18:30:20.017 に答える