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_Marionette_Backbone Routing - Fatal编程技术网

Backbone.js 主干路由器中的下一次回调

Backbone.js 主干路由器中的下一次回调,backbone.js,marionette,backbone-routing,Backbone.js,Marionette,Backbone Routing,如果第一个处理程序不满足/捕获特定情况,是否可以导航到下一个路由处理程序 您可以使用next()方法在Express(nodejs)中实现 假设您有以下路由器配置: routes: { '*path': 'onPath', '*notFound': 'onNotFound' }, onPath: function(path, next){ if(path == 'something'){ console.log('ok'); } else {

如果第一个处理程序不满足/捕获特定情况,是否可以导航到下一个路由处理程序

您可以使用
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
方法,但我只想知道是否可行。谢谢

首先,我不确定路由器中是否可以有两个路径匹配器。路由器如何知道使用哪一个?这里有一个选择。删除notFound路由并直接调用该方法:

routes: {
    '*path': 'onPath'
},

onPath: function(path){
    if(path == 'something'){
        console.log('ok');
    } else {
        this.onNotFound(path);
    }
},

onNotFound: function(path){
    console.log('KO');
}
或者更简洁的方法:你可以抛出一个事件(如果可以的话,避免太多的应用程序级事件。这只是一个例子)

在代码的其他地方(同样,可能不是在应用程序级别),您需要监听此事件:

App.listenTo("pathNotFound", function(){
               console.log('KO');
});

这些都写得很粗略。当然,您需要根据您的应用程序对其进行调整。

为什么不定义一个明确的路由并处理它呢?据我所知,如果要实现该功能,您必须运行自己的解决方案。如果不满足条件,只需重定向到notFound path如何?
App.listenTo("pathNotFound", function(){
               console.log('KO');
});