我有一个像这样的路由器设置:
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
之间进行更改,然后从任何路径中获取ID网址的view
部分。
获取默认路由从URL获取这些参数的最佳方法是什么?字面上拆分document.URL?
答案 0 :(得分:1)
如果将三个自定义路由合并到一个自定义路由,而不是将它们全部置于默认路由中,则会更容易阅读。
var AppRouter = Backbone.Router.extend({
routes: {
"/:resource/:id": "getResource"
},
getResource: function(resource, id) {
ticketList.url = "/index.php/tickets/viewJSON/" + resource[0] + id;
}
});
但请注意,这将匹配许多不同的网址,可能比您真正想要的更多。为每个资源分别设置路径可能更好一点,只需将它们映射到同一个函数即可。