2012-05-27 27 views
2

這是我的路線對象在BackboneJS應用:如何將多個路由引導到Backbone JS中的同一個方法?

 routes: { 
      ""    : "_navigate", 
      "home"   : "_navigate", 
      "blog"   : "_navigate", 
      "photos"   : "_navigate", 
      "notes"   : "_navigate", 
      "about"   : "_navigate", 
      "singlepost_:id" : "_navigate" 
     }, 

它重定向路由到_navigate方法,它看起來像這樣:

 _navigate: function(postId) { 
      if (postId) { 
       // show single entry 
       return; 
      } 

      // show regular entry 
     }, 

它完美的罰款。但是,我發現重複的路線對象很煩人。

我的問題是:是否有更好的方式將所有這些路線引導到相同的方法而不重複自己這麼多?

謝謝!

回答

1

非常簡單,真的。

 routes: { 
      "*actions:_id": "_navigate" 
     } 

感謝Jason Strimpel從BackboneJS谷歌集團。

2

http://backbonetutorials.com/what-is-a-router/檢查出層片

任何「*提示圖標」或部分「:PARAMS」在路由定義爲 參數被傳遞(在各自的順序)到相關聯的功能。定義爲「/:route /:action」的路由 將向回調函數傳遞2個變量(「route」和 「action」)。 (如果這是混淆了請發表 評論,我會嘗試更好地表達它)這裏有一些例子使用的 「:PARAMS」和「*潑濺」

routes: { 

     "/posts/:id": "getPost", 
     // <a href="http://example.com/#/posts/121">Example</a> 

     "/download/*path": "downloadFile", 
     // <a href="http://example.com/#/download/user/images/hey.gif">Download</a> 

     "/:route/:action": "loadView", 
     // <a href="http://example.com/#/dashboard/graph">Load Route/Action View</a> 

    }, 

    getPost: function(id){ 
     alert(id); // 121 
    }, 
    downloadFile: function(path){ 
     alert(path); // user/images/hey.gif 
    }, 
    loadView: function(route, action){ 
     alert(route + "_" + action); // dashboard_graph 
    } 
相關問題