我在Routers
中有两个资源:Students
和Colleges
。
class App.Routers.Colleges extends Backbone.Router
routes:
"index": 'index'
class App.Routers.Students extends Backbone.Router
routes:
'index': 'index'
'new': 'newStudent'
如何初始化这两条路线以便它们起作用?
我尝试像下面的代码一样进行初始化,但它无法正常工作。
window.App =
Models: {}
Collections: {}
Views: {}
Routers: {}
initialize: ->
new App.Routers.Students
new App.Routers.Colleges
Backbone.history.start()
$(document).ready ->
App.initialize()
当我尝试运行上面的代码时,它只显示了new App.Routers.Colleges
中大学和学生div中的数据。
答案 0 :(得分:1)
路由器中的路由被添加到全局Backbone.history
对象中。所以任何相同的路线都会覆盖先前的路线。如果在之后定义,即使是不相同的路线也可能会覆盖类似但更具体的路线。
在实例化新路由器时,其构造函数调用_bindRoutes
来解析从最后一个到第一个路由的路由,因此应首先定义特定路由,然后定义更通用的路由,以任何catch-all路由结束。
每个URL都必须是唯一的,因此您可以使用前缀命名每个路由器:
class App.Routers.Colleges extends Backbone.Router
routes:
'colleges': 'index'
class App.Routers.Students extends Backbone.Router
routes:
'students/new': 'newStudent'
'students': 'index'
或者您可以使用(或制作自己的)子路由器/控制器。