Backbone.history.navigate(url,{trigger:true,replace:true})

use*_*256 9 javascript url browser-history backbone.js

我使用此方法导航到url,触发事件而不是将url推送到浏览器历史记录.但是Backbone.history.navigate(url,{trigger:true, replace: true})从历史中替换以前的URL.示例:浏览器hystory

之前

localhost:port/url

Backbone.history.navigate(url + '/list',{ trigger:true, replace: true })

预期:路由触发事件url + '/list'和浏览器历史记录localhost:port/url 实际上:触发事件但浏览器历史记录localhost:port/#url/list.以前的网址被替换

Aub*_*cus 14

这是我认为你问的问题,如果我错了,请纠正我:

"如何在不更新网址的情况下在Backbone中触发路由?"

快速回答:

你不能.该替代选项也不会帮助你.这是文档的片段:

要更新URL而不在浏览器的历史记录中创建条目,请将replace选项设置为true.

如您所见,替换不会影响对URL的更新.

后续答案:

如果您不希望更新URL,这使我认为在您的应用程序中显示列表不是对您的应用程序状态的重大更新.如果这是真的,那么根据我的经验,你不应该使用Backbone.history对象来管理它.

如果您直接(例如,通过函数)或间接(例如,通过调度事件)调用此功能,那么您的应用程序将更新,而您的网址则不会.

我喜欢Derick Baily的Post关于如何设置路由器结构.它有点冗长,但值得一读.

另外,请查看David Sulc的回忆录 " 木乃伊的温柔介绍".我知道它使用的是Marionette.AppRouter对象,但是主体仍然是健全的.查看此文件以获取示例.

作为旁注,如果replace是问题; 看看这个SO答案.但请注意,hashChange选项主要用于根据文档的 x-browser兼容性.