2012-04-27 99 views
11

Backbone.js中的路由器负责路由客户端页面,并将它们连接到基于URL的操作和事件。但如何触发网址更改?我的意思是,如果要做到这一点的唯一方法是将与页面路由相关联的元素包含在<a>标记中。如何触发Backbone.js中的Backbone.Router事件?

因为我相关的鼠标按下和MouseUp事件与用于路由的元素,如果我把它放在<a>标签,鼠标按下和MouseUp事件肯定会成为无效的,因为它会与<a>标签的单击事件冲突。那么还有其他方法可以制作路由吗?

回答

31

您可以使用Router#navigate

导航router.navigate(fragment, [options])

每当你达到你的应用程序的一个点,你想保存为一个URL,调用以更新导航网址。如果您还想调用路由功能,请将触发器选项设置为true

所以,如果你的路由器是r并要激活路线#/some_route,那么你可以:

r.navigate('some_route', { trigger: true }); 

演示(打开你的控制台请):http://jsfiddle.net/ambiguous/xkZtB/

+0

非常感谢你的帮助! – chaonextdoor 2012-04-27 06:35:19

+0

还有一个问题,因为我必须访问模型中的数据来为我的url提供id,比如'category /:id'。我应该怎么做? – chaonextdoor 2012-04-27 06:48:46

+0

@chaonextdoor:你应该能够建立适当的路线作为一个字符串,并把它交给'navigate':'r.navigate('category /'+ m.get('id'),{trigger:true})' – 2012-04-27 07:00:44