我使用这个方法来导航到url,触发一个事件,而不是将url推到浏览器历史记录中。但是Backbone.history.navigate(url,{trigger:true, replace: true})
会替换历史记录中的先前url。示例:浏览器历史记录
使用前localhost:port/url
个Backbone.history.navigate(url + '/list',{ trigger:true, replace: true })
预期:路线url + '/list'
和浏览器历史localhost:port/url
上的触发事件实际:触发事件,但浏览器历史记录localhost:port/#url/list
。以前的url被替换
1条答案
按热度按时间vmjh9lq91#
我想你是在问,如果我说错了,请纠正我:
“如何在不更新URL的情况下触发Backbone中的路由?”
快速解答:
你不能。
replace
选项在这方面也帮不上忙。下面是来自文档的一个片段:若要更新URL而不在浏览器的历史记录中创建条目,请将replace选项设置为true。
正如您所看到的,替换不会影响URL的更新。
后续回答:
如果您不希望URL更新,那么我认为在应用程序中显示列表不是应用程序状态的主要更新。如果是这样,那么根据我的经验,您不应该使用
Backbone.history
对象来管理它。如果您直接(例如通过函数)或间接(例如通过调度事件)调用此功能,则您的应用将更新,而您的URL不会更新。
我喜欢Derick Baily's Post关于如何设置你的路由器结构。它有点长,但值得一读。
另外,请查看David Sulc's repo的“一个温和的介绍 puppet ”。我知道它使用的是Marionette.AppRouter对象,但原则仍然是健全的。Check out this file的一个例子。
顺便说一句,如果
#
是问题所在; check out this SO answer。但是要小心,根据文档,hashChange
选项主要是为了兼容x浏览器。