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



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

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之间变化,然后从URL的view部分后面的任何部分获取ID

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

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

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

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

最新更新