0

Я заметил, что когда я пишу

collection1.add(model1); -> Пользовательский интерфейс меняется отлично. Однако, когда я делаю
collection1.add(model1, {merge: true});
затем App.div1.currentView.collection.models показывает измененную модель (в консоли), но пользовательский интерфейс не изменяется.

У меня нет подсказки, почему?

(Примечание 1: Я использую Marionette.js с Backbone)
(Примечание 2: приложение является глобальным объектом марионеток; div1 является марионеток область в HTML)Магистраль - слияние: истина - опция не меняется UI

+0

В каком случае выполняется рендеринг? "Добавить"? Является ли 'collection1' пустым или уже имеет' model1'? –

+0

Да, его рендеринг при событии 'add'. 'collection1' не пуст и имеет множество моделей, включая' model1'. Все, что я хочу, это то, что когда я использую 'merge: true',' model1' должен быть обновлен с его новыми значениями в пользовательском интерфейсе! – vjjj

ответ

0

Это то, что работал с collection1.add(model1, {merge: true}) -

modelEvents: { 
    "change": "render" 
} 

// "update": "render" did not work 

Добавлено ^^ к Marionette.ItemView, который отвечал за model1.

1

Событие add срабатывает только тогда, когда новый элемент добавляется Коллекция. Если merge=false (поведение по умолчанию) будет добавлен новый элемент (возможно) (и у вас есть коллекция с двумя идентичными атрибутами и разными cid, id). С merge=true старый элемент будет обновлен, и событие update будет запущено.

add Событие будет активировано только при добавлении нового элемента.

update Событие будет активировано, если элемент будет добавлен, изменен или удален.

Решение: оказать область на update события.