2012-04-17 73 views
2

我創建了一個測試用例Backbone.js的@:當我改變功能 http://jsfiddle.net/VWBvs/5/爲什麼骨幹路由需要默認路由

路線被定義爲

var AppRouter = Backbone.Router.extend({ 
     routes: { 
      "/posts/:id" : "getPost", 
      "/download/*path": "downloadFile", 
      "*actions" : "defaultRoute" 
     }, 
     getPost: function(id) { 
      alert(id); 
     }, 
     defaultRoute : function(actions){ 
      alert(actions); 
     }, 
     downloadFile: function(path){ 
      alert(path); // user/images/hey.gif 
     }, 
     loadView: function(route, action){ 
      alert(route + "_" + action); // dashboard_graph 
     } 
    }); 

    var app_router = new AppRouter; 

    Backbone.history.start();​ 

defaultRoute : function(actions){ 
      alert(actions); 
     }, 

defaultRoute : function(actions){ 
      var action = actions 
     }, 

所有其他路徑將不起作用,這意味着不會彈出對話框。

但是,當更換代碼時,一切正常。

這真的很奇怪,讓我感到困惑。 SOS真誠......

回答

4

正如你的代碼defaultRoute是有史以來唯一的路線。如果你想要其他兩條路線起火,你必須刪除前導斜線。

routes: { 
    "posts/:id" : "getPost", 
    "download/*path": "downloadFile", 
    "*actions" : "defaultRoute" 
}