Как вызвать событие при сохранении модели Backbone? - PullRequest
13 голосов
/ 16 января 2012

Если я правильно выполнил домашнее задание, я узнал, что в Backbone нет встроенного события save , которое вызывается при сохранении модели с использованием метода сохранения модели (даже если есть событие уничтожить ).

Я также узнал, что у Backbone есть отличный механизм для создания пользовательских событий с использованием объекта Backbone.Events. Использование последнего работает, но у меня сложилось впечатление, что оно недостаточно мелкозернистое для моих нужд.

Моя настройка следующая. У меня есть таблица (представление), построенная из строк (представлений), где каждая строка имеет ссылку на модель. Когда модель будет сохранена, я хочу обновить / отобразить строку, чтобы отразить изменения.

Как можно создать событие save , которое запускается при сохранении модели, чтобы обновить строку таблицы (представление), имеющую ссылку на эту модель?

Другими словами, я бы хотел сделать следующее:

this.model.bind('save', this.render);

Ответы [ 2 ]

18 голосов
/ 16 января 2012

Всего 3 дня назад в Backbone был сделан коммит , который вызывает событие sync при успешном сохранении модели. Этот коммит еще не был выпущен, поэтому вам нужно будет загрузить исходный код из учетной записи github, если вы хотите его использовать.

View = Backbone.View.extend({
  initialize: function() {
    _.bindAll(this, 'onModelSaved');
    this.model.bind('sync', onSuccessCallback);
  },

  onModelSaved: function(model, response, options) {
    //perform your after save logic
  }
});
10 голосов
/ 06 апреля 2013

Начиная с Backbone.js 1.0.0, у вас есть событие sync, которое запускается, если модель успешно сохранена.

this.listenTo(this.model,'sync', this.render);

Обратите внимание, что change:attribute сначала запускается для соответствующих атрибутов, если происходит изменение значения атрибута, затем следует событие change, а затем событие sync.Событие sync происходит независимо от изменения модели.Это означает, что модель теперь синхронизирована со значениями сервера.

Также эти события запускаются, только если значения действительны.то есть models.validate не должен возвращать никаких ошибок для этих значений, полученных с сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...