Javascript 如何让Backbone.js路由器在CodeIgniter中的默认/索引(无标签hashtag)上触发

Javascript 如何让Backbone.js路由器在CodeIgniter中的默认/索引(无标签hashtag)上触发,javascript,.htaccess,codeigniter,backbone.js,Javascript,.htaccess,Codeigniter,Backbone.js,我有一个CodeIgniter应用程序,它使用.htaccess从url中删除index.php,使它们看起来像这样: http://example.com/admin/ http://example.com/admin/users http://example.com/admin/reports http://example.com/admin/files 作为一个单页主干应用程序,我需要在默认情况下显示文件列表。然后将编辑特定的文件 这是我的主干路由器: App.Router = Back

我有一个CodeIgniter应用程序,它使用.htaccess从url中删除index.php,使它们看起来像这样:

http://example.com/admin/
http://example.com/admin/users
http://example.com/admin/reports
http://example.com/admin/files
作为一个单页主干应用程序,我需要在默认情况下显示文件列表。然后将编辑特定的文件

这是我的主干路由器:

App.Router = Backbone.Router.extend({
    routes: {
      ''         : 'files',
      'file/:id' : 'file'
    },

    files: function(){
      $(document.body).append("Files route has been called..");
    },

    file: function(id){
      $(document.body).append("File route called with id:" + id);
    }

});
new App.Router;
Backbone.history.start();
我可以通过以下方式获得要触发的“文件”路由:

http://example.com/admin/files#file/33
但是,主干路由器完全忽略了这一点

当使用消除index.php文件的CodeIgniters重写规则时,如何获得要触发的默认或index Backbone.js路由

更新:我对Backbone.js很陌生,所以还在学习。我发现如果我改变:

Backbone.history.start();
致:


它工作正常。:)

主干路由器与浏览器历史api配合使用,它使用散列名称(#某物)来表示客户端上的某些状态。最初,/admin/files是服务器上的一个路由,在客户端被忽略,因此您将无法使用路由器进行文件路由。因为您的页面是为服务器路由呈现的,所以我只需要运行您需要在页面加载时运行的任何代码。我想这就是你想要的。如果您需要某种方法返回到初始的“文件”状态,那么您可能会添加一个索引路由,使其显示为/admin/files#index,这将使您返回到最初加载页面时的状态。

我这样做了,但如果有人直接进入默认文件列表,也会加载。但是,添加一个标记以跟踪是否请求了除“文件”以外的其他内容,并且未加载默认值(有效):
Backbone.history.start({root: "/admin/files/" });