2012-08-25 34 views
2

由于主干没有办法做大部分事情,所以我对很多东西感到困惑。其中一件事是通过我的应用程序导航的正确方法。Backbone.js和导航

我意识到BB路由器有一个'.navigate'方法可以用来推动URL和触发路由。现在,由于我的应用程序有多个路由器,我不确定在一个或其他路由器上调用'.navigate'之间有什么区别。

这是我的路由器

new Etaxi.Routers.System() 
new Etaxi.Routers.Header() 
new Etaxi.Routers.Videos() 
new Etaxi.Routers.News() 

现在我能做的

router = Etaxi.Routers.System() 
// or i could do 
router = Etaxi.Routers.Header() 

router.navigate(url) 

有没有我用我的应用程序的全球导航哪个路由器有什么区别?这对我来说似乎很奇怪。

回答

10

你呼叫的路由器没有区别。事实上,当你有多个路由器时,我建议不要调用特定的路由器。或者,就此而言,根本不用打电话给路由器。如果您查看路由器的navigate方法的源代码,您会发现它只能传递到Backbone.history.navigate。所以才称之为直接:

Backbone.history.navigate(url)

http://backbonejs.org/docs/backbone.html#section-114

我在几乎所有我的应用程序使用多个路由器,这是我如何调用该方法navigate。它工作的很好,并避免混淆哪个路由器调用。