クリックするとバックボーン ビューを作成し、コントロールをバインドするメニューがあります。これは、メニューをクリックするたびに発生します。私が知る必要があるのは、ビューが定義されてレンダリングされる前に (メニューをクリックするたびに) メモリからバックボーン オブジェクトをクリアする方法です。
そうしないと、メニューがクリックされるたびに、バックボーンが新しいビューを作成し、すべてのコントロールを再バインドします。だから私はこのようなものを得る:
r {cid: "view1", options: Object, $el: b.fn.b.init[1], el: div#templatePlaceholder, constructor: function…}
r {cid: "view2", options: Object, $el: b.fn.b.init[1], el: div#templatePlaceholder, constructor: function…}
r {cid: "view3", options: Object, $el: b.fn.b.init[1], el: div#templatePlaceholder, constructor: function…}
注: DOM は 1 つのレンダリングのみを表示します
編集: コード:
var app = {
Collection: Backbone.Collection.extend({}),
Model: Backbone.Model.extend({}),
View: Backbone.View.extend({
initialize: function(){
this.setElement($('#templatePlaceholder'));
},
render: function () {
var that = this;
Q.when(formDataGet.execute()).then(function (data) {
that.$el.html(data);
});
},
events: {
"click button[id=lbtn]": "goLeft",
"click button[id=rbtn]": "goRight"
},
goLeft: function () {
// Button clicked
console.log(this);
},
goRight: function () {
// Button clicked
console.log(this);
}
}),
};
var view = new app.View({
});
view.render();
このコードは、メニュー項目がクリックされるたびに発生します。そして、これは新しいビューを作成します。