Запустить представление для визуализации после изменения модели
В магистрали вы можете сделать следующее:
model.trigger("destroy", model);
И это удалит модель из коллекции и представит представление. Я пытаюсь получить тот же эффект при изменении атрибута на модели. Есть ли простой способ сделать это?
2 ответа
В основе лежит соглашение о том, что у представления есть метод рендеринга, который вы можете вызывать в качестве обратного вызова для любого из встроенных событий, ваших собственных событий или когда бы вы ни захотели.
Обычно у меня есть такой код в методе инициализации представления:
this.listenTo(this.model, 'change', this.render, this);
this.listenTo(this.model, 'remove destroy', this.close, this);
Вы также можете вызвать вызов рендеринга для изменения определенного атрибута, вот пример получения представления для повторного рендеринга при изменении атрибута возраста модели:
this.listenTo(this.model, 'change:age', this.render, this);
Где-то еще функция рендеринга будет срабатывать после чего-то вроде этого:
model.set({ age: 27 });
Подробнее о встроенных магистральных событиях смотрите в их документации.
Вот примерная скрипка изменения модели, запускающего рендеринг.
В марионеточных представлениях есть встроенные конструкции, которые не позволяют вам писать подобный шаблон Backbone.
Marionette.CollectionView.extend({
collectionEvents: {
"change": "render"
}
});