Routeur de backbone avec plusieurs paramètres

Je dois faire fonctionner ceci:

routes: { ':product' : 'showProduct', ':product/:detail': 'showProductDetail' 

ShowProductDetail n'est jamais appelé alors que l'itinéraire ': produit' est défini même s'il est défini ultérieurement. J'ai essayé ce qui suit

 routes: { ':product(/:detail)': showProductOrDetail } 

Mais cela ne sera pas appelé lorsque seul le deuxième paramètre change. Il est important que j'ai le produit lui-même ou le produit et les détails dans l'url .

Est-ce que quelqu'un sait comment réparer ceci?

Il y a une petite solution frauduleuse à votre problème. J'ai l'impression qu'il y a une façon plus agréable de le faire, mais cela devrait fonctionner:

 routes: { "product/:id": "showProduct", "product/:id/details/:did": "showDetails" }, showProduct: function(id) { this.showDetails(id); }, showDetails: function(id, did) { // Check did for undefined } 

Une réponse tardive (plus d'un an) … mais vous pouvez utiliser RegEx dans un routeur de backbone pour y parvenir. Mon exemple suppose que les paramètres commencent par un nombre.

C'est-à-dire: 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); } }); 

J'espère que cela t'aides.