为什么骨干路由需要默认路由

时间:2012-04-17 03:49:52

标签: backbone.js router

我使用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真诚......

1 个答案:

答案 0 :(得分:4)

因为你有代码defaultRoute是唯一可以触发的路径。如果你想要触发其他两条路线,你必须删除前导斜杠。

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