backbone.js路由无法正常工作

时间:2012-12-14 04:53:19

标签: javascript apache backbone.js routes

我已经定义了

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。

谢谢!

1 个答案:

答案 0 :(得分:2)

与问题评论中提到的@Layoric一样,默认情况下Backbone.Router会理解#个网址,因此网址看起来像/~jayc707/#/moments/

但有可能使用/~jayc707/moments/等标准网址与Backbone的pushState支持,如Backbone.Histrory documentation中所述。

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