Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Requirejs 当我第二次实例化视图时,视图事件被设置两次_Requirejs - Fatal编程技术网

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

Requirejs 当我第二次实例化视图时,视图事件被设置两次,requirejs,Requirejs,这是我的项目架构问题——这是我的第一个主干项目,我可能做错了什么 在我的所有项目路由回调中,我有: myroute: function() { this.currentView = new MyCustomView(); }, mysecondroute: function() { this.currentView = new MySecondView() }, //... 所以在所有路由回调中,我实例化了一些视图。此视图具有initialize方法,该方法调用render方

这是我的项目架构问题——这是我的第一个主干项目,我可能做错了什么

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

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

mysecondroute: function() {
    this.currentView = new MySecondView()
},
//...
所以在所有路由回调中,我实例化了一些视图。此视图具有initialize方法,该方法调用render方法。除了每次实例化同一个视图时,所有视图事件(在
事件:{}
中声明)都是“绑定”的之外,它是有效的。所以,当我访问同一个路由两次时,与此路由对应的视图事件将被触发两次


也许我不应该在每个路由调用上实例化新视图,但我如何才能做到这一点呢?我的意思是标准是什么?也许我应该以某种方式卸载当前视图-有什么方法可以做到这一点吗?

我认为您必须添加一个方法来在关闭视图时解除所有事件的绑定

像这样

close : function () {
   //your code to clean everything before closing the view
   this.remove();
   this.unbind();
}
因此,下次调用视图时,将在视图初始化期间添加事件,这就是为什么要调用两次事件的原因。initialize方法将事件绑定到.el元素。你需要确保在某个时候解开它们