Каков наилучший подход для следующего параметра: длинный список, если элементы (несколько сотен человек), и после нажатия на запись списка открывается новое диалоговое окно с деталями.Массивный вид многоразового использования (установите новую модель на существующий вид)
Есть несколько вариантов (см также here):
- используют модель «фиктивный» и один вид и изменить атрибуты фиктивных моделей -> не отражает изменения в исходной модели
- изменить модель одного уже существующего вида
- каждый раз, когда нажимается на список, создается новый вид, который создает модель -> производительность?
- использовать marionette рамки -> есть небольшая документация, которая делает его трудно понять, для меня
- использование JSPerf View -> Я попробовал онлайн демо, но на быстрой прокрутки было несколько ошибок
Я попытался вариант 2, но, похоже, имеются следы памяти.
ReusableView = Backbone.View.extend({
setModel: function(model) {
// unbind all events
this.model.stopListening();
this.undelegateEvents();
// set new model
this.model = model;
this.delegateEvents({
"click": "onClicked",
"mouseover": "onMouseOver"
});
this.initialize();
}
});
Вот fiddle были может быть создано множество моделей показали пользователь с одной точки зрения. Введите количество создаваемых моделей и нажмите «Создать модели».
Вопросы: Почему у вас есть следы памяти? Как правильно очистить после использования модели?
Для распределения памяти я использовал хром и его диспетчер задач. Потребление памяти около 30M для 70000 просмотров.
Вы можете просто позвонить 'this.delegateEvents()' и он будет тянуть их из вашего события хэша. – Andrew