$ save экземпляра $ save () стирает свойства

0

У меня есть следующий код в контроллере:

$scope.chart = $resource('/api/chart/01234').get();
// { name: 'Foobar', id: '01234' }

$scope.send = function() {
    $scope.chart.$save();
}

Но после того, как пользователь запускает send(), остальные в только свойства $scope.chart являются те, от $resource (например, $promise, $save за toJSON name id $save, toJSON, и т.д...), остальные не ушли (не name или id).

Теги:

2 ответа

0

Может быть так:

Важно понимать, что вызов метода объекта $ resource немедленно возвращает пустую ссылку (объект или массив в зависимости от isArray). Как только данные возвращаются с сервера, существующая ссылка заполняется фактическими данными.

Из угловых документов в разделе " Returns ".

  • 0
    Но поведение, которое я вижу, похоже, противоречит примеру этого документа с пользовательским методом $charge() . Я понимаю, что если я сделаю bar = foo.$save() , bar будет пустым объектом, но почему foo тоже должен стать им ? Кроме того, часть документа, которую вы цитируете, примерно противоположна той, с которой я сталкиваюсь: это о пустом объекте, который заполняется впоследствии, но у меня уже есть заполненный объект, который уничтожен.
  • 0
    Вы делаете хорошее замечание, и я не уверен, почему foo становится пустым. Согласно документации foo должны быть заполнены данными, возвращенными с сервера. Как только он вернулся. Единственная причина, по которой я могу придумать, почему ваш объект пуст, заключается в том, что обещание не было выполнено к тому времени, когда вы проверяете. foo.$save(function() { console.log(foo); } должен иметь foo с обновленными свойствами.
Показать ещё 2 комментария
0

Я все еще не понимаю, почему экземпляр $save() стирает экземпляр, но использование класса save() работает:

var Chart = $resource('/api/chart/01234');
$scope.chart = Chart.get();

$scope.send = function() {
    Chart.save({}, $scope.chart);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню