我正在构建一个 Marionette 应用程序,只是被路线冲突所困扰。作为 Backbone 的新手,我不确定是否可以为 Marionette 的AppRouter
. 到目前为止,我看到的最好的线索是:
- 实现默认路由。
- 我不相信这会解决我的问题,因为这些应用程序位于两个单独的模块中。
- 将基于正则表达式的路由集成为
Marionette.AppRouter
.- 这并没有让我觉得可能是最简单的事情。
在我布局正在发生的事情之前,这里有一些上下文:
users_app.js.coffee:
@Gdit.module "UsersApp", (UsersApp, App, Backbone, Marionette, $, _) ->
class UsersApp.Router extends Marionette.AppRouter
appRoutes:
'users/:id/edit': 'editUser'
'users/:id': 'showUser'
API =
showUser: (id) ->
new UsersApp.Show.Controller
id: id
editUser: (id) ->
new UsersApp.Edit.Controller
id: id
App.addInitializer ->
new UsersApp.Router
controller: API
role_app.js.coffee:
@Gdit.module "RolesApp", (RolesApp, App, Backbone, Marionette, $, _) ->
class RolesApp.Router extends Marionette.AppRouter
appRoutes:
'users/roles': 'editUsersRoles'
API =
editUsersRoles: ->
new RolesApp.Edit.Controller
App.addInitializer ->
new RolesApp.Router
controller: API
当我尝试访问Roles.Edit.Controller
through时出现问题/#users/roles
:
Started GET "/users/roles" for 127.0.0.1 at 2013-08-16 14:02:01 -0400
Processing by UsersController#show as JSON
Parameters: {"id"=>"roles"}
如您所见,“角色”正在被/users/:id
路由捕获并被处理为id
. 不是我所期望的:)
最后,由于我提到了“可能的最简单的事情”,我承认这实际上就是改变 to 的editUsersRoles
路线/users_roles
。但是,我更想知道是否存在更优雅的解决方案并看到一些尖峰等。