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.