好的,我已经对此进行了一些阅读,我很确定我知道问题与什么有关我只是不知道解决它的最佳方法。我有标准的主干路由器,它为我设置了一个项目详细信息视图,然后当我点击一个名为“开始”的按钮时,它会创建一个新视图,将我带到一种人们可以用一些按钮玩的游戏在底部附加了“点击”事件。第二个视图不是通过路由器调用的,而是直接从第一个视图调用的。
问题是某人第二次返回主屏幕并再次执行此操作,这次每个按钮都有两个事件。第三次有三个事件。很明显原来的视图还在听这些按钮。我已经阅读了这个并调用了 Remove() 方法,但这是我需要做的吗?如果是这样,我在哪里调用删除?相关代码如下:
第一个视图
window.GameDrillView = Backbone.View.extend({
initialize: function () {
this.render();
},
render: function () {
$(this.el).html(this.template(this.model.toJSON()));
return this;
},
events: {
"click .start" : "startGameDrill",
},
startGameDrill: function () {
var start = $('#start').val();.
var stop = $('#stop').val();.
var StartView = new GameDrillStartView({model: this.model, el: $('#content')[0], start: start, stop:stop});
}
});
开始查看
window.GameDrillStartView = Backbone.View.extend({
// declare variables
initialize: function () {
this.render();
},
events: {
"click .nextstage" : "nextstage", // 2ND TIME THROUGH GETS CALLED TWICE
},
nextstage: function () {
// Do some stuff //
this.render(); //Re-render
},
render: function () {
// Do some variables stuff
this.$el.html(this.template(jQuery.extend(this.model.toJSON(), extended_options)));..
return this;
}
});