Backbone.js - 默认路由器,从URL获取数据

时间:2012-08-01 14:55:46

标签: codeigniter backbone.js

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

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/ (这将分别在useragentorderuao之间进行更改,然后从任何路径中获取ID网址的view部分。

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

1 个答案:

答案 0 :(得分:1)

如果将三个自定义路由合并到一个自定义路由,而不是将它们全部置于默认路由中,则会更容易阅读。

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

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

但请注意,这将匹配许多不同的网址,可能比您真正想要的更多。为每个资源分别设置路径可能更好一点,只需将它们映射到同一个函数即可。