Я заметил, что когда я пишу
collection1.add(model1);
-> Пользовательский интерфейс меняется отлично. Однако, когда я делаю
collection1.add(model1, {merge: true});
затем App.div1.currentView.collection.models
показывает измененную модель (в консоли), но пользовательский интерфейс не изменяется.
У меня нет подсказки, почему?
(Примечание 1: Я использую Marionette.js с Backbone)
(Примечание 2: приложение является глобальным объектом марионеток; div1 является марионеток область в HTML)Магистраль - слияние: истина - опция не меняется UI
0
A
ответ
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
события.
В каком случае выполняется рендеринг? "Добавить"? Является ли 'collection1' пустым или уже имеет' model1'? –
Да, его рендеринг при событии 'add'. 'collection1' не пуст и имеет множество моделей, включая' model1'. Все, что я хочу, это то, что когда я использую 'merge: true',' model1' должен быть обновлен с его новыми значениями в пользовательском интерфейсе! – vjjj