Roteador impedindo transições via willTransition

Ele dispara a ação willTransition nas rotas atualmente ativas quando você tenta novamente a transição usando o auxiliar {{link-to}} ou o método silenceTo .

Sintaxe

Ember.Route.extend ({
   actions: {
      willTransition(transition) {
         //handle the transition
      }
   }
});

Exemplo

O exemplo fornecido abaixo descreve a prevenção de transições por meio do willTransitionação na rota ativa. Crie uma rota chamada willtransition e abra o arquivo router.js com o seguinte código para definir os mapeamentos de 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
});

Router.map(function() {
   this.route('willtransition');
});

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

Crie o arquivo application.hbs e adicione o seguinte código -

//link-to is a handlebar helper used for creating links
{{link-to 'Click For Transition' 'willtransition'}}
{{outlet}} //It is a general helper, where content from other pages 
   will appear inside this section

Abra o arquivo willtransition.js criado em app / routes / com o seguinte código -

import Ember from 'ember';

export default Ember.Route.extend ({
   actions: {
      willTransition(transition) {
         
         //decalring the self variable
         var self = this;
         
         //checking whether self variable is false or not
         if (!this.get('allowTransition')) {
            document.write('<b><font color = "red">');
            
            //display the message
            document.write("transition abort");
            document.write('</font><br>');
            transition.abort();  //calling abort function

            Ember.run.later(function () {
               //setting the self variable to true
               self.set('allowTransition', true);
               document.write('<b><font color = "blue">');
               
               //display the message
               document.write("transition retry");
               document.write('</font>');
               transition.retry();  //calling retry function
            }, 500);
         }
      }
   }
});

Abra o arquivo willtransition.hbs criado em app / templates / com o seguinte código -

<h2>Hello...Welcome to Tutorialspoint!!!</h2>
{{outlet}}

Resultado

Execute o servidor ember e você receberá a seguinte saída -

Ao clicar no link, os dados serão exibidos. Mas se você clicar no link de retorno, a ação willTransition chama o método transaction.abort () e , a seguir , transaction.retry () .