这是我的项目架构问题 - 这是我的第一个骨干项目,我可能做错了。
在我所有的路线回调项目中,我有:
myroute: function() {
this.currentView = new MyCustomView();
},
mysecondroute: function() {
this.currentView = new MySecondView()
},
//...
因此,在所有路由回调中,我实例化了一些视图。此视图具有调用render方法的initialze方法。除了所有视图事件(在events: {}
中声明)在每次实例化相同视图时都是“绑定”时,它才有效。所以,当我访问同一路线时,两次事件对应于此路线的视图被触发两次......
可能我不应该在每个路由呼叫上实例化新视图 - 但我怎么能这样做?我的意思是什么标准?也许我应该以某种方式卸载当前视图 - 有没有任何方法可以做到这一点?
答案 0 :(得分:0)
我认为你必须添加一个方法来取消绑定所有事件以关闭视图
像这样close : function () {
//your code to clean everything before closing the view
this.remove();
this.unbind();
}
因此,下次调用视图时,将在视图初始化期间添加事件,这就是为什么要调用两次事件的原因。 initialize方法将事件绑定到.el元素。你需要确保在某些时候解开那些。