2015-07-28 1 views
0

Я использую Restangular для загрузки объекта, его обновления и последующего восстановления на сервере с помощью метода save. Вот код, который извлекает объект:Использование save или put with Restangular results in «undefined» входит в URL-адрес

Restangular.one("survey", surveyID).getList().then (
    function (response) { 
    $scope.survey = response[0]; 
    } 
); 

Это устанавливает $scope.survey к правильно «restangularized» объект с полями, которые возвращаются из запроса GET, наряду с методами, как save, put и т.д.

Если я затем вызвать следующую функцию после внесения некоторых изменений в $ scope.survey объекта:

$scope.saveChanges = function() { 
    $scope.survey.save(); 
}; 

restangular пытается использовать URL /survey/1/undefined для запроса PUT (1 является правильный идентификатор для объекта).

В моем survey объекте нет поля id (это вместо surveyID), и поэтому я подозревал, что это может быть проблемой. Однако, заменив surveyID поле с id поле изменили URL, чтобы быть /survey/1/undefined/1

Я урезанная объект, возвращаемый запросом GET быть только примитивы, и это не меняет ситуацию.

Почему генерируется неправильный маршрут?

ответ

0

II обнаружили, что проблема связана с сервисом REST; при вызове с GET /surveys/1 он возвращал массив с одним объектом в нем, а не возвращал сам объект.

Я думаю, что это привело к тому, что в результате было принято решение о том, что доступ к коллекции был получен (обратите внимание, что мне нужно было позвонить getList, а не get, чтобы получить должным образом restangularized объект).