Backbone 路由器中的下一个回调
Next callback in Backbone Router
如果第一个处理程序没有satisfy/catch特定情况,是否可以导航到下一个路由处理程序?
您可以使用 next()
方法在 Express (nodejs) 中实现。
假设您有这样的路由器配置:
routes: {
'*path': 'onPath',
'*notFound': 'onNotFound'
},
onPath: function(path, next){
if(path == 'something'){
console.log('ok');
} else {
next();
}
},
onNotFound: function(){
console.log('KO');
}
我知道我可以混合使用 onPath
和 onNotFound
方法,但我只想知道是否可行。谢谢!
首先,我不确定路由器中是否可以有 2 个路径匹配器。路由器如何知道使用哪个?这是一个选项。去掉notFound路由直接调用方法:
routes: {
'*path': 'onPath'
},
onPath: function(path){
if(path == 'something'){
console.log('ok');
} else {
this.onNotFound(path);
}
},
onNotFound: function(path){
console.log('KO');
}
或者更简洁的方法:您可以抛出一个事件(如果可以,请避免应用程序级事件过多。这只是一个示例)
App.trigger("pathNotFound", path);
代码中的其他地方(同样,可能不在应用程序级别),您将需要侦听此事件:
App.listenTo("pathNotFound", function(){
console.log('KO');
});
大致写到这里。当然,您需要根据您的应用进行调整。
如果第一个处理程序没有satisfy/catch特定情况,是否可以导航到下一个路由处理程序?
您可以使用 next()
方法在 Express (nodejs) 中实现。
假设您有这样的路由器配置:
routes: {
'*path': 'onPath',
'*notFound': 'onNotFound'
},
onPath: function(path, next){
if(path == 'something'){
console.log('ok');
} else {
next();
}
},
onNotFound: function(){
console.log('KO');
}
我知道我可以混合使用 onPath
和 onNotFound
方法,但我只想知道是否可行。谢谢!
首先,我不确定路由器中是否可以有 2 个路径匹配器。路由器如何知道使用哪个?这是一个选项。去掉notFound路由直接调用方法:
routes: {
'*path': 'onPath'
},
onPath: function(path){
if(path == 'something'){
console.log('ok');
} else {
this.onNotFound(path);
}
},
onNotFound: function(path){
console.log('KO');
}
或者更简洁的方法:您可以抛出一个事件(如果可以,请避免应用程序级事件过多。这只是一个示例)
App.trigger("pathNotFound", path);
代码中的其他地方(同样,可能不在应用程序级别),您将需要侦听此事件:
App.listenTo("pathNotFound", function(){
console.log('KO');
});
大致写到这里。当然,您需要根据您的应用进行调整。