EmberJS - Routeur lorsque les promesses sont rejetées

La transition sera abandonnée si une promesse est rejetée par le modèle pendant une transition et il n'y aura aucun affichage des nouveaux modèles de route de destination et aucun message d'erreur dans la console.

Syntaxe

Ember.Route.extend ({
   model() {
      //code here
   },

   actions: {
      error: function(reason) {
         // display or return the "Failure Message"
      }
   }
});

Exemple

L'exemple ci-dessous montre comment la transition sera abandonnée si le modèle rejette la promesse. Créez une nouvelle route et nommez-la promisereject et ouvrez le fichier router.js pour définir les mappages d'URL -

import Ember from 'ember';                   
//Access to Ember.js library as variable Ember
import config from './config/environment';
//It provides access to app's configuration data as variable config 

//The const declares read only variable
const Router = Ember.Router.extend ({
   location: config.locationType,
   rootURL: config.rootURL
});

//Defines URL mappings that takes parameter as an object to create the routes
Router.map(function() {
   this.route('promisereject');
});

//It specifies Router variable available to other parts of the app
export default Router;

Ouvrez le fichier fichier application.hbs créé sous app / templates / avec le code suivant -

<h2>Router When Promises Reject</h2>
{{#link-to 'promisereject'}}Click Here{{/link-to}}

Ouvrez maintenant le fichier promisereject.js créé sous app / routes / avec le code suivant -

import Ember from 'ember';

export default Ember.Route.extend ({
   model: function () {
      //RSVP.js is an implementation of Promises
      return Ember.RSVP.reject("Failure of promises");
   },

   actions: {
      //actions for displaying failure of promises using error hook and it takes 
         reason as parameter
      error: function (reason) {
         document.write("<h3>" + reason + "</h3>");
      }
   }
});

Production

Exécutez le serveur de braises et vous recevrez la sortie suivante -

Lorsque vous cliquez sur le lien, aucun nouveau modèle d'itinéraire ne sera rendu et il affichera un message d'échec -