У меня есть следующий код в контроллере:
$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
).
Может быть так:
Важно понимать, что вызов метода объекта $ resource немедленно возвращает пустую ссылку (объект или массив в зависимости от isArray). Как только данные возвращаются с сервера, существующая ссылка заполняется фактическими данными.
Из угловых документов в разделе " Returns
".
Я все еще не понимаю, почему экземпляр $save()
стирает экземпляр, но использование класса save()
работает:
var Chart = $resource('/api/chart/01234');
$scope.chart = Chart.get();
$scope.send = function() {
Chart.save({}, $scope.chart);
}
$charge()
. Я понимаю, что если я сделаюbar = foo.$save()
,bar
будет пустым объектом, но почемуfoo
тоже должен стать им ? Кроме того, часть документа, которую вы цитируете, примерно противоположна той, с которой я сталкиваюсь: это о пустом объекте, который заполняется впоследствии, но у меня уже есть заполненный объект, который уничтожен.foo
становится пустым. Согласно документацииfoo
должны быть заполнены данными, возвращенными с сервера. Как только он вернулся. Единственная причина, по которой я могу придумать, почему ваш объект пуст, заключается в том, что обещание не было выполнено к тому времени, когда вы проверяете.foo.$save(function() { console.log(foo); }
должен иметьfoo
с обновленными свойствами.