3

Я пытаюсь решить обещание от angular $resource сохранить.Угловой ресурс Сохранить обещание

Документов указать, что я могу получить доступ к необработанному $ 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); 
} 

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

Вы можете создать демо ? – dfsq

+0

какая угловая версия вы используете? – Grundy

+0

AngularJS v1.4.0 –

ответ

0

Вам нужно вызвать then метод на ответ сохранения непосредственно:

var saveResult = itemService.saveItem(item); 

saveResult.then(function(itemDef) { ... }); 
Смежные вопросы