【问题标题】:backbone.js route not working骨干网.js路线不起作用
【发布时间】:2012-12-02 02:40:24
【问题描述】:

我已经定义了

var AppRouter = Backbone.Router.extend({
    routes: {
      "photos/": "showPhotos",
      "pic/:object_id": "getPic"
      //"*actions": "defaultRoute"
    },

    showPhotos: function() {
      console.log("routing: showPhotosPage");
      App.showPhotosPage();
    },

我还确保启动并启动路由器...

  // Initiate the router
  var app_router = new AppRouter();

  // Start Backbone history
  Backbone.history.start();

当我将浏览器指向 localhost/~myusername 时,获取要加载的页面和脚本(通过查看 firebug)。但是,如果我将浏览器指向 localhost/~myusername/photos/photos/,则会出现以下浏览器错误。

未找到 在此服务器上找不到请求的 URL /~jayc707/moments/。

我正在使用 Apache 运行 Mountain Lion。

谢谢!

【问题讨论】:

  • 试试 localhost/~myusername/#/photos
  • 有效!谢谢。我应该如何修改我的路线以使 localhost/~myusername/photos 有效?
  • 我不相信你能做到。
  • Backbone.history.start 调用中使用pushState: true (backbonejs.org/#History-start) 请注意,当用户重新加载页面时,Web 服务器会提供初始请求,因此请确保它返回有意义的内容。

标签: javascript apache backbone.js routes


【解决方案1】:

就像问题 cmets 中提到的 @Layoric,默认情况下,Backbone.Router 理解 # URL,因此 url 看起来像 /~jayc707/#/moments/

但是,可以使用标准 url,例如 /~jayc707/moments/ 和 Backbone 的 pushState 支持,如 Backbone.Histrory documentation 中所述。

使用 pushState 有利有弊。主要的缺点是旧版浏览器不支持它,旧版浏览器将降级为基于哈希的 URL。另一个是,您必须配置您的 Web 服务器 (Apache) 以返回与它相关的任何 URL 的根页面。有关详细信息,请参阅上面的文档。

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多