Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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,是否可以关闭或停止主干路由器侦听其定义的路由 我这样问是因为我一直在测试主干子例程(),设置了一个应用程序,该应用程序有许多空间,用户可以在其中运行许多子应用程序 因此,我定义了一个主路由器,子计算机结构如下: MainRouter = Backbone.Router.extend routes: "":"root" "spaces/:id/:module(/*subroute)":"invokeModule" root: () ->

是否可以关闭或停止主干路由器侦听其定义的路由

我这样问是因为我一直在测试主干子例程(),设置了一个应用程序,该应用程序有许多空间,用户可以在其中运行许多子应用程序

因此,我定义了一个主路由器,子计算机结构如下:

   MainRouter = Backbone.Router.extend
    routes:
      "":"root"
      "spaces/:id/:module(/*subroute)":"invokeModule"

    root: () ->
      console.log "root trigger"

    invokeModule: (id, module, subroute) ->
      that = this
      GigaApp.module(module).start({nested_root: "spaces/#{id}/#{module}"})

  SubAppRouter = Backbone.SubRoute.extend
    routes:
      "":"app_home"

    app_home: () ->
      console.log 'at sub app home'

  SubApp.on "start", (options) ->
    SubApp.router = new SubAppRouter(options.nested_root)
当主路由器启动子应用程序时,此一般结构从第一次初始化子应用程序开始工作,该子应用程序使用正确的嵌套路由初始化其路由器。随后,子AppRouter中定义的其他管线也会触发fine

但是,如果导航到不同的空间(具有不同的id),并导航回第一个空间,此结构将中断,因为已为该空间初始化的子应用程序将覆盖主路由器,并且不会从主路由器调用启动子应用程序


因此,我想知道是否有一种方法可以停止或禁用主干路由器的路由触发解除绑定。

我很好奇为什么您不使用木偶?它应该可以解决将路线划分为较小的适当对象的问题


请看一些关于构建大规模应用程序的屏幕广播。它不仅与使用rails作为后端的开发人员相关。它提供了一个很好的方式来在模块中布局你的应用程序结构(每个模块都有自己的应用程序路径)。非常值得推荐。

到目前为止,答案是

德里克·贝利(Derick Bailey)在主干网回购协议上公开了这一问题,建议对主干网的结构进行一些更改,以支持此类更改:

随后讨论了这种改变的优点,提出了以下观点:

首先,恐怕我不理解这里的前提。有两个路由公理与此修补程序相矛盾:

路由器用于将URL与应用程序中的位置相匹配

URL的全部意义在于它们总是可以访问的——一旦你有了一个URL,你可以在任何时候回到它(为它添加书签,粘贴到浏览器中)


我还浏览了主干源代码,没有迹象表明我正在考虑的功能是可能的。

嗨,Jakob。谢谢你的回复,我将试用Approter,我没有理由不使用它,除了我第一次学习/尝试木偶。足够公平=)-如果我能帮你什么,请告诉我。这是一个很好的剧本,我真的建议你在后座看电影。这对我帮助很大,它给了你一种构建应用程序的方法。谢谢,我这周会抽出时间来观看。AppRouter是在木偶应用程序中运行路由的一种很好、很枯燥的方式(看起来),因为它不需要几个路由器操作,这些操作只需要调用一个控制器操作。然而,我仍然认为我需要一些嵌套的路由——让子应用路由器监听它们的路由,同时忽略路由的基本“spaces/:id”段。不过,我会继续评估Approter,也许我把事情搞得太复杂了。