当我第二次实例化视图时,视图事件被设置两次

时间:2013-02-15 18:42:23

标签: requirejs

这是我的项目架构问题 - 这是我的第一个骨干项目,我可能做错了。

在我所有的路线回调项目中,我有:

myroute: function() {
    this.currentView = new MyCustomView();
},

mysecondroute: function() {
    this.currentView = new MySecondView()
},
//...

因此,在所有路由回调中,我实例化了一些视图。此视图具有调用render方法的initialze方法。除了所有视图事件(在events: {}中声明)在每次实例化相同视图时都是“绑定”时,它才有效。所以,当我访问同一路线时,两次事件对应于此路线的视图被触发两次......

可能我不应该在每个路由呼叫上实例化新视图 - 但我怎么能这样做?我的意思是什么标准?也许我应该以某种方式卸载当前视图 - 有没有任何方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

我认为你必须添加一个方法来取消绑定所有事件以关闭视图

像这样

close : function () {
   //your code to clean everything before closing the view
   this.remove();
   this.unbind();
}

因此,下次调用视图时,将在视图初始化期间添加事件,这就是为什么要调用两次事件的原因。 initialize方法将事件绑定到.el元素。你需要确保在某些时候解开那些。