У меня есть представление, которое принимает collection
, как показано ниже:
MyView = Backbone.View.extend({
initialize: function() {
this.collection.on("change://an attribute of a model in aCollectionToRender", someAction);
}
});
var MyViewInstance = new MyView({
collection: aCollectionToRender
});
По сути, я не хочу, чтобы MyView
прослушивал изменения во всей коллекции, а только в одном атрибуте модели, содержащейся в коллекции.
Я понимаю, что есть несколько альтернатив этому:
- Создайте представления для каждой модели
aCollectionToRender
и прикрепите.on("change")
событий в этих представлениях. Я не хочу этого делать, потому что это неправильно в моей ситуации. - Просто создайте событие
this.collection.on("change")
и установите фильтр обработчика событий в соответствии с моими требованиями. Это менее элегантно, и если Backbone уже позволяет мне писать фильтры событий, как я просил выше, это дублирующийся код.
Мне просто интересно, есть ли способ написать прослушиватель событий, который уже выполняет фильтрацию. Этот вопрос также может быть дубликатом; Я смотрел, но ничего подобного не нашел, однако есть много вопросов по Backbone