backbone.js (网址:{trigger:true,replace:false})

xmjla07d  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(85)

我使用这个方法来导航到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被替换

vmjh9lq9

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浏览器。

相关问题