[英]How to get Backbone.js Router to trigger on default/index (no #tag hashtag) in CodeIgniter
我有一个使用.htaccess的CodeIgniter应用程序,从网址中删除index.php,因此它们看起来像这样:
http://example.com/admin/
http://example.com/admin/users
http://example.com/admin/reports
http://example.com/admin/files
由于http://example.com/admin/files是单页主干应用程序,因此默认情况下,我需要显示文件列表。 然后http://example.com/admin/files#file/123将编辑特定文件。
这是我的骨干路由器:
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
但是,骨干路由器完全忽略了http://example.com/admin/files 。
使用CodeIgniters RewriteRule消除index.php文件时,如何获取默认或索引Backbone.js路由来触发?
更新:我对Backbone.js非常陌生,因此仍在学习中。 我发现是否可以更改:
Backbone.history.start();
至:
Backbone.history.start({root: "/admin/files/" });
它可以正常工作。 :)
骨干路由器与浏览器历史记录api一起使用,在其中使用哈希名称(#something)表示客户端上的某些状态。 最初,/ admin / files是服务器上的路由,在客户端上被忽略,因此您将无法使用路由器进行文件路由。 由于您的页面是针对服务器路由呈现的,因此我将只运行需要在页面加载时运行的任何代码。 我想这就是你想要的。 如果您需要某种方式返回到此初始“文件”状态,则可以添加一个索引路由,以便它像/ admin / files#index一样显示,这将使您回到首次首次加载页面时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.