2013-02-21 2 views
10

С этого commit мы не можем дважды регистрировать представление с идентификатором. Это кажется логичным. Однако у меня возникла проблема.Попытка зарегистрировать представление с уже используемым идентификатором

маршрутизатор

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

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

Посмотреть

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

Считайте, что я уже на маршруте App.ContactShowRoute. Я хотел бы transitionTo() тот же маршрут, но с другим контекстом.

Я ожидал emberjs уничтожить вид, а затем создать его снова, но я получил следующее сообщение об ошибке:

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

Я не хочу, чтобы создать экземпляр представления с тем же идентификатором дважды. Я просто хочу, чтобы ember уничтожил фактический, а затем создал новый.

+0

Я думаю Ember пробует создать экземпляр нового вида, когда старый View еще в DOM и до сих пор зарегистрирован Эмбер. Теперь создается новый новый вид и присваивается elementId. В этот момент вы получили 2 объекта View с одним и тем же идентификатором, но только один из них находится в DOM. Почему вам нужно определить элемент самостоятельно? Я думаю, что есть быстрое решение. – mavilein

ответ

3

Это, кажется, ошибка в текущей версии. Может, вам стоит открыть билет. До этого фиксировано, это может помочь:

App.ContactShowRoute = Ember.Route.extend({ 

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

Что такое LastRenderedTemplate? это часть API? – testndtv

Смежные вопросы

 Смежные вопросы