【问题标题】:Backbone.js And Push StateBackbone.js 和推送状态
【发布时间】:2014-02-25 17:01:22
【问题描述】:

我正在使用 Backbone.js 开发 Web 应用程序,但我对路由和 Html5 推送状态的正确使用存在疑问。这是我的代码

var HoopRouter  = new HoopApp.Router.RequestManager;
Backbone.history = Backbone.history || new Backbone.History({});
Backbone.history.start({
    root      : '/web_app',
    pushState : true
});

我正在这样做:

Backbone.history.navigate('#gameScreen/31', { trigger : true });

这工作正常,但给了我这样的网址 https://my_host/web_app/gameScreen/31 但是当我在导航栏中输入此网址并按 Enter 时,浏览器说在此服务器中找不到该网址,并且 href 链接也不起作用。如果我将 pushState 检查为 false,它运行良好,但 Backbone 使用“#”路由,我想使用“/”路由。 我不知道我是不是忘记了什么。

【问题讨论】:

  • 您是否真的有一个对应于my_host/web_app/gameScreen/31 的页面或可以提供该页面的服务器端路由器?根据您到目前为止向我们展示的内容,我没有看到任何已定义的客户端路由,因此除非上一个问题的答案是肯定的,否则我不希望这会起作用。
  • 目前这是我定义的客户端路由 { "" : "index", "gameScreen/:gameid" : "html5game", ":whatever" : "notFound" }
  • 您的服务器也希望尝试为该路由提供服务,因此如果您只需要客户端路由,则需要让它显式忽略该路由。处理此问题的一种典型方法是让它处理基本路由并切断 url 中之后的任何内容,以便它将来自该基本 url 的所有路由视为相同。

标签: backbone.js pushstate


【解决方案1】:

您的服务器需要为您的客户端在使用 pushState 时可以生成的每个 URL 返回一个值。见BackboneJS + Codeigniter pushState true not working

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多