Как я могу предотвратить удаление itemView
и повторную визуализацию на месте при повторении arrangedContent
контроллера, если свойство наблюдаемой модели не меняет значение?
Краткая версия ниже, используя запись в блоге App.Post
в качестве примера модели:
Контроллер:
sortProperties: ['createdAt']
Шаблон:
{{each arrangedContent}}
{{title}}
{{body}}
{{/each}}
objectAt(0).reload()
приводит к тому, что соответствующий элемент удаляется и вставляется обратно на то же место. Проблема в том, что itemView теряет предыдущее состояние, так что в результате возникает плохое взаимодействие с пользователем.
Я проследил это до этой последовательности вызовов:
1. retrieved record is pushed onto the store
2. notifyPropertyChange('data') onto the record
3. propertyWillChange('createdAt')
4. arrayWillChange() -> this causes the removal of the item, even though
the value of createdAt didn't change
5. arrayDidChange() -> reinserts the object, it gets re-rendered in the list
Мне нужно, чтобы не выполнялась последовательность удаления/вставки, когда свойство не изменило фактическое значение.
Одна мысль заключалась в том, чтобы поставить в очередь удаления/вставки в arrayWillChange/arrayDidChange и не вызывать их, если значение не изменилось. Я подозреваю, что это вызовет дополнительные проблемы с синхронизацией.