【发布时间】:2013-04-15 00:19:19
【问题描述】:
我有一个菜单,点击后会创建主干视图并绑定控件。每次我点击菜单时都会发生这种情况。我需要知道的是在定义和渲染视图之前(在每次菜单单击时)如何从内存中清除骨干对象。
否则,每次单击菜单时,主干都会创建一个新视图并重新绑定所有控件。所以我得到这样的东西:
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 只显示一个渲染
编辑: 代码:
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();
每次单击菜单项时都会触发此代码。 这创造了一个新的观点。
【问题讨论】:
-
我正在做一些非常基本的事情。只要将视图对象传递给 remove(),我就可以删除视图。但是当我单击我的菜单时,它无法知道视图对象是什么。也许我可以按 ID 删除视图。那会有所帮助。但如果我可以删除主干范围之外的所有主干视图,那将是最好的。
标签: backbone.js view destroy