Existe-t-il un moyen d'attraper tous les itinéraires non assortis avec Backbone?

Je souhaite avoir une route «attraper tout» qui s'exécute lorsque aucune des autres routes définies n'est associée. Un type de gestionnaire d'erreur 404 NotFound.

J'ai essayé d'ajouter ceci, qui fonctionne, mais empêche d'autres voies de correspondre:

this.route(/(.*)/, 'notFound', this.notFound); 

Quelqu'un a-t-il déjà résolu ce problème?

Répondant ici pour l'exhaustivité.

Vous pouvez le faire de 2 façons. Définissez l'expression régulière en utilisant route() , comme dans la question. Cependant, en raison de ce bug, vous devriez définir tous vos itinéraires via la méthode de l' route() et dans l'ordre inverse (catchall en haut). Cela vous empêche d'utiliser les itinéraires hash, donc (ma) méthode préférée est:

 routes: { 'users/search': 'searchUsers', 'users/:id': 'loadUser', '*notFound': 'notFound' } 

La clé '*notFound' peut être n'importe quoi commençant par * . Vous avez juste besoin de caractères après le * pour éviter une erreur d'analyse.

Il existe une autre façon, plus simple et plus simple, de résoudre ce problème. Backbone.History.start() renvoie soit vrai soit faux en fonction de l'adéquation d'une route ou non. Donc, si vous venez de faire:

 if (!Backbone.history.start()) router.navigate('404', {trigger:true}); 

Au lieu de l'habituel:

 Backbone.History.start(); 

Il aura le même effet que les autres réponses.

Ce très petit plugin fait son travail: https://github.com/STRML/backbone.routeNotFound

C'est la manière la plus élégante et la plus robuste de résoudre ce problème que j'ai trouvé jusqu'à présent, mais gardez à l'esprit qu'en l'utilisant, vous essayez d'utiliser les composants internes de Backbone.

Sans un exemple de votre code de routage actuel, je présume d'assurer que votre parcours soit la dernière route qui devrait fonctionner pour vous

Ajoutez-le simplement comme dernier itinéraire dans la liste. De cette façon, cela ne correspondra que l'option de recharge.

Je pense que cela ne devrait pas passer JavaScript à résoudre, devrait être la langue à résoudre, par exemple php. Sur le côté du serveur, le traitement des mots, tant que vous avez la condition, vous pouvez répondre à la tête avec le numéro d'erreur 404