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
}
}
});