Перемещение из мира без рамки в Backbone.js, я применил практику «кэширования» объектов jQuery, всегда сохраняя ссылку на них (для КПД).Шаблон для кэширования подэлементов вида в Backbone.js
var myCachedEl = $('#element');
myCachedEl.on('click', function() {
myCachedEl.html('That tickles.');
});
В Backbone, это то, как я мог бы кэшировать мои объекты JQuery:
var RandomView = Backbone.View.extend({
intitialize: function() {
this.$lastRoll = this.$el.find('#last-roll');
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$lastRoll.html(this.model.get('lastRoll'));
},
events: {
'click #last-roll': function() {
this.model.roll();
}
}
});
var randomView = new RandomView({
el: '#random-view',
model: random
});
Учитывая мой ток установки, я хотел бы сделать что-то сродни к ...
events: {
'click this.$lastRoll': function() {
// ...
}
}
... где в моих событиях я мог привязать событие click к кешированному элементу. Однако приведенный выше синтаксис не работает. Я подозреваю, что может быть каким-то образом «официально» определять подэлементы, так что я могу использовать некоторый синтаксис, похожий на то, что выше.
Вопрос: Есть «лучше», «чище» или более «Магистраль-семантический» шаблон для кэширования с моей точки зрения в суб-элементы, которые я мог/должен следовать, вместо моего текущего шаблона?
Благодарим вас за объяснение того, как работает барботаж. Похоже, мне нечего беспокоиться о производительности; Я предположил, что внутри, Backbone - это $ (выбор) элементов и вызов .on() для каждого из них, как и в прошлом. Как тщеславно полагать, что разработчики Backbone придерживались тех же ужасных привычек, которые у меня были. :П – Jackson