2013-08-03 13 views
6

Ho un percorso come questo:Come aggiornare dinamicamente il modello Ember.Route?

App.PeopleRoute = Ember.Route.extend({ 
    model: function() 
    { 
    return App.Persons.find(personId); 
    } 
}); 

dove personId è caricato in modo asincrono ed è una variabile normale JavaScript esterno Ember. Ora, quando viene visualizzato il percorso, ottiene il PersonId corrente e visualizza i dati corretti. Ma quando cambio il valore di personId non aggiorna la vista.

Quindi la mia domanda è qual è un modo per aggiornare questo percorso per trovare i record con una nuova persona?

+0

Probabilmente potrei trovare un modo per farlo ma prima di farlo, potresti dirmi perché vuoi farlo? Potresti provare a fare qualcosa che sarebbe più semplice fare in modo Ember.js. –

+0

@tarasm ha ragione, se ti trovi a combattere il framework per fare ciò che non è fuori dagli schemi, allora dovresti ripensare al tuo approccio, perché c'è sicuramente un modo migliore per ottenere ciò che ti serve. Prova a descrivere più dettagliatamente il tuo caso d'uso e sono sicuro che possiamo aiutarti ... – intuitivepixel

risposta

2

Questo perché il gancio model viene eseguito solo quando immesso tramite URL per rotte con segmenti dinamici. Maggiori informazioni a riguardo here.

La soluzione più semplice per questo sarebbe utilizzare transitionTo.

App.PeopleRoute = Ember.Route.extend({ 
    model: function(params) 
    { 
    return App.Persons.find(params.personId); 
    }, 
    actions: { 
    personChanged: function(person){ 
     this.transitionTo("people", person); 
    } 
    } 
}); 

App.PeopleController = Em.Controller.extend({ 
    observeID: function(){ 
    this.send("personChanged"); 
    }.observes("model.id"); 
}); 
+0

Ho provato questa soluzione ma non funzionerà. La transizione accade ma il modello rimane lo stesso. –

Problemi correlati