Ниже приведен код, который я имею в настоящее время, который повторно отображает коллекциюView при каждом добавлении или удалении модели. Тем не менее, он кажется неэффективным, поскольку он должен делать все это каждый раз, когда мне действительно нужно, чтобы один modelView был удален или один был добавлен. Итак, как я мог достичь этого?Повторно отобразить только измененный раздел Marionette.js CollectionView
var CollectionView = Marionette.CollectionView.extend({
childView: ModelView,
initialize: function() {
[ "add", "remove" ].forEach(function(eventName) {
this.listenTo(this.collection, eventName, this.render, this);
}.bind(this));
}
});
Заранее благодарим за любую помощь, которую вы можете дать!
Можете ли вы поделиться [mcve], с которой мы можем играть с ..? –
@TJ Хорошо, я привел пример на JSFiddle [здесь] (https://jsfiddle.net/z5zs3jq0/8/) (так как обязательно нужно несколько строк кода, чтобы заставить его работать, хотя я не знаю, t включил маршрутизатор или любые другие действительно лишние функции). Пример в настоящий момент создает 800 элементов ItemViews и отображает их на странице через CollectionView. Когда вы нажимаете кнопку «Удалить», модель удаляется из коллекции, и представление автоматически перерисовывается. Тем не менее, чем больше элементов на странице, тем больше времени требуется для повторной рендеринга, что подразумевает, что она снова возвращает все это ... – user162097
... вместо того, чтобы просто удалить единственный элемент ItemView из DOM, который быть наиболее эффективным. Например, попробуйте изменить цикл в обработчике событий «start», чтобы он создавал только 8 элементов вместо 800, а затем удалял один, и это заметно ускоряется. – user162097