我需要让它工作:
routes: {
':product' : 'showProduct',
':product/:detail': 'showProductDetail'
showProductDetail在设置':product'路由时永远不会被调用,即使之后设置了它。我尝试了以下
routes: {
':product(/:detail)': showProductOrDetail
}
但是只有第二个参数改变时才会调用它。 我必须拥有产品本身或网址中的产品和详细信息。
有谁知道如何解决这个问题?
答案 0 :(得分:17)
你的问题有一点hacky解决方案。我觉得有一种更好的方法可以做到这一点,但这应该有效:
routes: {
"product/:id": "showProduct",
"product/:id/details/:did": "showDetails"
},
showProduct: function(id) {
this.showDetails(id);
},
showDetails: function(id, did) {
// Check did for undefined
}
答案 1 :(得分:1)
迟到的响应(超过一年)..但您可以在骨干路由器中使用RegEx来实现此目的。 我的例子假设参数将以数字开头。
ie:localhost:8888 / #root / 1param / 2param
var router = Backbone.Router.extend({
initialize: function () {
// Use REGEX to get multiple parameters
this.route(/root/, 'page0');
this.route(/root\/(\d+\S+)/, 'page1');
this.route(/root\/(\d+\S+)\/(\d+\S+)/, 'page2');
},
page0:function(){
console.log("no id");
},
page1:function(id1){
console.log(id1);
},
page2:function(id1,id2){
console.log(id1);
console.log(id2);
}
});
希望这有帮助。