私はBackbone.View
を持っています。これはコレクションをレンダリングし、マウスクリックでフィルタリングします。クリックするボタンにクラスactive
を追加する必要がありますが、ボタンはこのビューの一部であり、いつでもaddClass
またはtoggleClass
にしようとすると、デフォルトのクラスで再びレンダリングされます。マウスクリックイベントでクラスを切り替えます
var ResumeList = Backbone.View.extend({
events: {
'click #active': 'showActive',
'click #passed': 'showPassed'
},
initialize: function() {
this.collection = new ResumeCollection();
},
render: function (filtered) {
var self = this;
var data;
if (!filtered) {
data = this.collection.toArray();
} else {
data = filtered.toArray();
}
this.$el.html(this.template({ collection: this.collection.toJSON() });
_.each(data, function (cv) {
self.$el.append((new ResumeView({model: cv})).render().$el);
});
return this;
},
showActive: function() {
this.$('#active').toggleClass('active');
// a function that returns a new filtered collection
var filtered = this.collection.filterActive();
this.render(filtered);
}
});
しかし、私はすでに言ったように、私は必要なクラスは、ビューが再描画され、クラスをデフォルトに設定されている、ちょっと切り替えまたは追加されます。ここに私の見解です。これを処理する方法はありますか?
'toggleElement'が。$ el.find( '#アクティブが')'ハードコードされ、この 'ので、uncessaryです'toggleActive'をjQueryを使うための複雑すぎる方法にしています。 –