2015-07-16 14 views
6

Voglio interrompere la transizione su un percorso particolare e mostrare una modale. Ecco come il mio codice di rotta appare come:Emberjs interrompe transizione e mostra modale

export default Ember.Route.extend({ 
    model: {/* some code here */}, 
    actions: { 
    willTransition: function(transition) { 
     if (!this.controller.get('model.name')) { 
     console.log('aborting transition'); 
     transition.abort(); 
     this.send('showModal', { 
      template: 'campaign/campaign-name-modal', 
      controller: this.controller, 
      model: this.controller.get('model') 
     }); 
     } 
     else { 
     // Bubble the `willTransition` action so that 
     // parent routes can decide whether or not to abort. 
     return true; 
     } 
    } 
    } 
}); 

e poi nella mia application.hbs, ho:

{{outlet 'modal'}} 

Quello che sto osservando è che la transizione si interrompe, ma il mio modal non si presenta. Quando passo l'ordine a qualcosa del tipo:

this.send('showModal', { 
     template: 'campaign/campaign-name-modal', 
     controller: this.controller, 
     model: this.controller.get('model') 
    }); 
    console.log('aborting transition'); 
    transition.abort(); 

la transizione non si interrompe affatto.

Non sono esattamente sicuro del motivo per cui ciò potrebbe accadere. Qualche indicazione?

+0

Nel secondo codice, stanno producendo il log della console 'interruzione di transizione'? – AcidBurn

risposta

1

magari provare a modificare il condizionale per utilizzare firstObject:

if (!this.controller.get('model.firstObject.name')) { 
+0

Il condizionale non è il problema. L'esecuzione va all'interno del blocco "if" e quindi si comporta male. – Rajat

+0

Presumo che stai ricevendo il messaggio della console 'transizione abortire' senza la transizione abortire. Quale versione di Ember stai usando? –

+0

Sono in '1.10'. – Rajat

Problemi correlati