【问题标题】:Backbone do not write URL to Browser History骨干网不会将 URL 写入浏览器历史记录
【发布时间】:2015-12-23 14:55:53
【问题描述】:

当用户单击项目(例如照片)时,我有一个弹出模式用户单击照片,我从host.com/u/1234/ 导航到 URL host.com/u/1234/postID,这只是主干中的模式视图

问题是当用户关闭模式(这会将 URL 更改为 host.com/u/1234/)然后在浏览器中单击返回时,我希望用户返回上一页(假设为 host.com/feed)但它们被重定向回host.com/u/1234/,因为从技术上讲,在我的历史记录中,这是最后一次写入历史记录。

我不太确定如何解决这个问题。我已经尝试了以下代码,这是根据 Backbone 文档“要更新 URL 而不在浏览器的历史记录中创建条目,请将替换选项设置为 true。”

Backbone.history.navigate(this.model.get('user').url + '/' + this.model.id, {trigger: false, replace: true});

【问题讨论】:

  • 我们的团队以前也这样做过,但是我们使用benalman.com/projects/jquery-bbq-plugin 而不是任何内置的主干功能,尽管这取决于您当前是否使用 JQuery。
  • 您如何在模型视图中来回导航..?你能提供一个minimal reproducible example..吗?
  • 我想尽可能避免使用第 3 方选项。谢谢

标签: javascript backbone.js


【解决方案1】:

这里的解决方案是我需要在从host.com/u/1234/POSTID 导航回host.com/u/1234/ 时执行replace:true,而不是从host.com/u/1234/ 导航到host.com/u/1234/POSTID 时执行host.com/u/1234/

【讨论】:

    【解决方案2】:

    根据文档,您所指的navigate 方法属于Router,而不是History

    尝试使用路由器导航:

    router.navigate(this.model.get('user').url + '/' + this.model.id,
     {trigger: false, replace: true});
    // where router is the router instance
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 2015-06-14
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多