2013-02-21 2 views
10

Poiché questo commit non è possibile registrare una vista con un ID due volte. Questo sembra logico. Comunque ho avuto un problema.Tentativo di registrare una vista con un ID già in uso

Router

App.Router.map(function() { 
    this.resource('contact', { path: '/contacts/:contact_id' }); 
}); 

App.ContactShowRoute = Ember.Route.extend({}); 

View

App.ContactShowView = Em.View.extend({ 
    elementId: "page-show-contact" 
}); 

Si consideri che io sono già sulla rotta App.ContactShowRoute. Vorrei transitionTo() lo stesso percorso ma con un contesto diverso.

mi aspettavo emberjs di distruggere la vista e quindi creare di nuovo, ma ho ottenuto il seguente errore:

Uncaught Error: assertion failed: Attempted to register a view with an id already in use: page-show-contact 

Non voglio creare un'istanza di una vista con lo stesso ID due volte. Voglio solo ember per distruggere quello attuale e quindi crearne uno nuovo.

+0

Credo Ember trys per istanziare la nuova vista, quando la vecchia View è ancora nel DOM e ancora iscritto su Ember. Ora viene creata la nuova nuova vista e viene assegnato l'elementId. In questo momento hai 2 oggetti View con lo stesso id, ma solo uno è nel DOM. Perché hai bisogno di definire l'elemento da solo? Penso che ci sia una soluzione veloce. – mavilein

risposta

3

Sembra essere un bug nella versione attuale. Forse dovresti aprire un biglietto. Fino a quando questo è fisso, questo potrebbe aiutare:

App.ContactShowRoute = Ember.Route.extend({ 

    renderTemplate : function(controller, model) { 
    if(this.lastRenderedTemplate == this.routeName) 
     return; 
    return this._super(); 
    } 
}); 
+0

Che cos'è lastRenderedTemplate? fa parte dell'API? – testndtv