簡體   English   中英

如何使Backbone.js路由器在CodeIgniter中的默認/索引(無#tag hashtag)上觸發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM