我有一个这样的路由器设置:
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/
(这将分别在user
、agent
和order
、u
、a
和o
之间变化,然后从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,可能比您真正想要的要多。为每个资源提供单独的路线,并将它们映射为相同的功能,这可能是一个更好的主意。