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
Javascript 主干路由器添加路由作为功能_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干路由器添加路由作为功能

Javascript 主干路由器添加路由作为功能,javascript,backbone.js,Javascript,Backbone.js,我正在使用Backbone.js,我有一个路由器。这是路由器的“我的路由”属性: routes: { "pagea": "pageafunc", "pageb": "pagebfunc", "pagec": "pagecfunc", } 是否可以添加如下所示的路线: "mypath/*subroute": function(subroute) { //do somethong } ?否,路由对象只能有字符串值 如果您想通过自己的回调,则需要通过编程设置路由

我正在使用Backbone.js,我有一个路由器。这是路由器的“我的路由”属性:

routes: {
    "pagea": "pageafunc",
    "pageb": "pagebfunc",
    "pagec": "pagecfunc",
}
是否可以添加如下所示的路线:

"mypath/*subroute": function(subroute) {
    //do somethong  
}

否,
路由
对象只能有字符串值

如果您想通过自己的回调,则需要通过编程设置路由。例如,在路由器的初始化功能中,可以执行以下操作:

this.route('mypath/*subroute', 'mypath_subroute', function(){
  // Route callback stuff.
});

这就是说,这可能很快变得不可读,这意味着您必须扫描初始化函数以了解您定义的所有路由,因此将所有路由存储在
routes
对象中要干净得多。或者至少将路由功能体保留在路由器本身上,并将路由路径保留在单独的部分以便于阅读。

接受的答案不正确,或者可能只是过时了。在任何一种情况下,根据官员的说法:

路由哈希映射URL。。。到路由器上的函数(或直接函数定义,如果您愿意的话)

哇!这意味着您应该能够执行以下操作:

var
Router= Backbone.router.extend({
  routes:{
    "path/to/:view": function(view){ console.log(view); }
    }
  });

例如,如果您想在初始实例化之前扩展或修改
{routes}
对象,那么这是一个方便的缩写。但是,值得注意的是,使用匿名回调将禁用该路由的命名空间事件触发。(见上文)不过,这可能不是最糟糕的权衡,这取决于您的用例。

谢谢!我需要它来动态创建路由,所以首先它不像routes属性那样可读。有意义。很高兴为您提供帮助:由于我使用它来动态创建路由,如何为每个路由获取不同的名称???。您应该能够在名称或其他内容中添加递增id。如果要将额外事件绑定到路由器,则通常使用该名称。