2013-03-14 19 views
5

Sto provando a reindirizzare al primo elemento in un controller Array. Ho trovato alcune altre domande relative a questo, ma nessuna aveva risposte che sembravano funzionare (sono stati apportati molti cambiamenti, quindi è comprensibile).Reindirizzamento al primo elemento in ArrayController

Una risposta particolare da Yehuda here:

App.DoctorsRoute = Ember.Route.extend({ 
    model: function() { 
    return App.Doctor.find(); 
    }, 

    redirect: function() { 
    var doctor = this.modelFor('doctors').get('firstObject'); 
    this.transitionTo('doctor', doctor); 
    } 
}); 

io 'penso' ho ricreato questo scenario, ma devo aver fatto qualcosa di sbagliato ...

Qualsiasi indicazioni su ciò che sto facendo male è molto apprezzato

Esempio JSBin here.

+0

Ho lo stesso problema esatto. Nemmeno sembra funzionare per me. – Ben

risposta

1

Il problema è che l'elenco dei modelli non è ancora stato caricato dal server. A seconda delle tue esigenze ti consiglio di usare una promis per lasciare che la routine resti in attesa finché il tuo modello non viene caricato.

App.DoctorsRoute = Ember.Route.extend({ 
    model: function() { 
    return App.Doctor.find().then(function (list) { 
     return list.get('firstObject'); 
    }); 
    }, 

    redirect: function() { 
    var doctor = this.modelFor('doctors'); 
    this.transitionTo('doctor', doctor); 
    } 
}); 

naturalmente .. wel che renderebbe l'abit redirect sciocco, quindi se si vuole solo aspettare che l'elenco per caricare si potrebbe provare:

App.DoctorsRoute = Ember.Route.extend({ 
    model: function() { 
    return App.Doctor.find(); 
    }, 

    redirect: function() { 
    var self = this; 
    this.modelFor('doctors').then(function (list) { 
      return list.get('firstObject'); 
     }).then(function (doctor){ 
      if(!doctor) 
       self.transitionTo('doctor', doctor); 
     }); 
    } 
}); 
+0

Ho provato a seguire questo esempio, ma l'elenco che ottengo ha lunghezza 0, quindi il firstObject non è definito. Qualche lavoro in giro? Grazie in anticipo! – wen

+0

bene allora il tuo elenco è vuoto. Suppongo che tu possa sempre reindirizzare su un'altra strada .. Io inserirò qui sotto. (solo un idear .. fammi sapere se non funziona) – Bram

+0

Sono abbastanza sicuro di ottenere risultati dal server, ma la riga "return list.get ('firstObject') è ancora attivata prima che l'elenco sia disponibile. – wen

Problemi correlati