Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/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
Backbone.js 主干网-路由/视图更改事件之前_Backbone.js - Fatal编程技术网

Backbone.js 主干网-路由/视图更改事件之前

Backbone.js 主干网-路由/视图更改事件之前,backbone.js,Backbone.js,在切换到其他视图之前,我想在视图上执行一个方法。比如说 var HomeView = Backbone.View.extend({ ......, close: function() { } }); var LoginView = Backbone.View.extend({ ...... } }); 如果我的当前视图是“HomeView”,并且如果我要切换到“LoginView”,则在切换到LoginView之前,我需要在HomeView中执行关闭功能。有办法吗 换

在切换到其他视图之前,我想在视图上执行一个方法。比如说

var HomeView = Backbone.View.extend({  
......,   
close: function() {

}
});

var LoginView = Backbone.View.extend({  
......    
}
});
如果我的当前视图是“HomeView”,并且如果我要切换到“LoginView”,则在切换到LoginView之前,我需要在HomeView中执行关闭功能。有办法吗

换句话说,我的视图应该在更改之前自动执行关闭函数

我看过stackoverflow以前的一些帖子。在这种情况下,它们似乎过时或没有用处

**HomeView.js**
var HomeView = Backbone.View.extend({  

});

var LoginView = Backbone.View.extend({  
......    
}
});

function close()
{
 //code
}
现在在路由器中或调用另一个视图之前,只需调用close()方法


如果您使用路由器在视图之间切换,希望这对您有所帮助。

var HomeView = Backbone.View.extend({
    initialize : function(){
        /*
            router here references a global router object
            "route" event is triggered when any route has been matched; 
            if you want to call the close function only when navigating to login view you may use something like "route:login"
        */
        this.listenTo( router , "route", this.close );
    },
    close: function( router, route ) {
            /* becaouse route event will be called every time the route changes. 
               it will also be called when navigating to the HomeView. 
               use the route argument to filter this event out 
            */
            if( route != 'home' ){
               // close
            }
    }
    ....
});

你好如果我有两个视图,这是可以的。例如,如果我有三个视图(home、login、signup),并且如果我在login和signup之间切换,那么home的close会被调用,这是错误的。
**HomeView.js**
var HomeView = Backbone.View.extend({  
initialize: function(){
},
close: function(){ //code }
});

var LoginView = Backbone.View.extend({  
 initialize: function(){
  (new HomeView).close();
  //code
 }
}
});