Размещение только изменить поля на $ Sake of $ Resource

StackOverflow https://stackoverflow.com//questions/12691573

  •  12-12-2019
  •  | 
  •  

Вопрос

При вызове $ Сохранить на Ngresource, возможно ли опубликовать только редактированные поля отредактированных полей, а не выставлять всю модель каждый раз?

var User = $resource('http://example.com/user/123/');

User.get(function(user) {
  user.name="John Smith";
  user.$save();
  // What I *want* -> POST: /user/123/ {name:'John Smith'}
  // What currently happens -> POST: /user/123/ {name:'John Smith', age: 72, location: 'New York', noOfChildren: 5}
});
.

Это было полезно?

Решение

Нет, это невозможно, по крайней мере, не в экземплярах, см. http:// docs.Angularjs.org/api/ngresource.$Resource

[...] Методы действия на объекте класса или объекта экземпляра могут быть вызваны следующим Параметры:

    .
  • http get "Класс" Действия: Resource.action([parameters], [success], [error])
  • Неизведанные действия "Класс": Resource.action([parameters], postData, [success], [error])
  • Неизведанное действие экземпляра: instance.$action([parameters], [success], [error])

Итак, это возможно, пройдя только данные для сохранения в «статическом» методе сохранения, т. Е. Генеракодицетагкод.Что-то вроде этого:

User.get(function(user)
{
    user.name = 'John Smith';
    User.save({name: user.name});
});
.

Разработает ли это, наверное, будет зависеть от того, что вы собираетесь делать с экземпляром User.save.

Другие советы

Когда я хочу сохранить только одно поле, я использую метод статического генеракодицетагкода, с обратным вызовом, который требует ответа от этого и обновляет локальный объект на успех:

$scope.saveOneField = function(modelInstance) {
  ModelName.save({
    id: modelInstance.id,
    theField: <some value>
  }, function(response) {
    // If you want to update *all* the latest fields:
    angular.copy(response, modelInstance.data);
    // If you want to update just the one:
    modelInstance.theField = response.data.theField;
  });
};
.

Это предполагает, что когда запрос на почту отправляется на ресурс (т. Е. ГенеракодицетагCode), ваш сервер отвечает последней обновленной версией модели ModelInstace.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top