0

我有一个这样的路由器设置:

var AppRouter = Backbone.Router.extend({
    routes: {
        "/agents/:id": "getAgent",
        "/orders/:id": "getOrders",
        "/users/:id": "getUsers",
        '*path':  'defaultRoute'

    },
    getAgent: function(id) {
        ticketList.url = "/index.php/tickets/viewJSON/a"+id;
    },
    getOrders: function(id) {
        ticketList.url = "/index.php/tickets/viewJSON/o"+id;
    },
    getUsers: function(id) {
        ticketList.url = "/index.php/tickets/viewJSON/u"+id;
    },
    defaultRoute: function() {
        //(here needs to be  the code)   
    }

});

我正在使用 codeigniter,所以当我访问时,/index.php/agents/view/1103我需要强制ticketList.url-/index.php/tickets/viewJSON/a1103取自a/agent/这将分别在useragentorder、和之间变化u,然后从URL 部分的任何路径中获取 ID 。aoview

获取从 URL 获取这些参数的默认路由的最佳方法是什么?从字面上拆分document.URL?

4

1 回答 1

1

如果您将三个自定义路由合并到一个自定义路由,而不是将它们全部放在默认值中,那么阅读起来会更容易。

var AppRouter = Backbone.Router.extend({
    routes: {
        "/:resource/:id": "getResource"
    },

    getResource: function(resource, id) {
        ticketList.url = "/index.php/tickets/viewJSON/" + resource[0] + id;
    }
});

但请注意,这将匹配许多不同的 URL,可能比您真正想要的更多。为每个资源设置单独的路由,并将它们映射到相同的功能可能是一个更好的主意。

于 2012-08-01T19:52:42.533 回答