1

我已经定义

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。

谢谢!

4

1 回答 1

2

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

但是,可以使用标准 url,例如Backbone.Histrory 文档中解释的/~jayc707/moments/Backbone支持。pushState

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

于 2012-12-14T07:21:58.083 回答