我正在尝试在Backbone 0.9.10中设置路由。我想匹配以下类型的路线:
/england/
/england/birmingham
/france
/france/paris
...
等。这就是我目前在路由器中的内容:
var AppRouter = Backbone.Router.extend({
routes: {
"": "index",
"(/:country)": "index",
"(/:country)(/:city)": "index"
},
index: function(country, city) {
console.log('index', country, city);
}
});
var StateApp = new AppRouter();
Backbone.history.start({ pushState: true });
我有两个问题:
/
,/england
或其他任何内容。 country
参数成为参数,而不是指定各个国家/地区。如果可能的话,我宁愿使用正确的URL路由而不是正则表达式解析。
答案 0 :(得分:14)
如果您希望将所有网址(包括根网址)路由到一个方法,您只需要定义一条路线:
routes: {
"(:country)(/:city)": "index"
}
由于这两个参数都是可选的,因此匹配:
如果您只想要格式为england
和england/london
但不是根页/
的路线,请声明一条单独的空路线,并将:country
部分设为非 - 可选:
routes: {
"" : "home",
":country(/:city)": "index"
}
答案 1 :(得分:2)
如果您想拥有一条路线,并且可以灵活地更改您想要的网址。你也可以考虑
routes: {
"(/country/:country)(/city/:city)": "index"
}
匹配
"" (Empty string)
"country/england"
"country/england/city/london"