Запустить представление для визуализации после изменения модели

В магистрали вы можете сделать следующее:

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"
    }
});

скрипка

Другие вопросы по тегам