2013-02-21 60 views
10

由於此commit我們無法爲ID註冊兩次ID。這似乎合乎邏輯。但是我遇到了一個問題。嘗試註冊已使用ID的視圖

路由器

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 

我不想實例具有相同ID的視圖的兩倍。我只是想燼來摧毀實際的,然後創建一個新的。

+0

我猜餘燼改掉實例化新的視圖,當舊的觀點依然是在DOM,仍然與Ember註冊。現在您的新的新視圖被創建並且elementId被分配。在這一刻,你得到了2個具有相同ID的View對象,但只有一個在DOM中。爲什麼你需要自己定義elementId?我認爲有一個快速的解決方法。 – mavilein 2013-02-21 10:58:48

回答

3

這似乎是當前版本中的一個錯誤。也許你應該打開一張票。 直到這個是固定的,這可能幫助:

App.ContactShowRoute = Ember.Route.extend({ 

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

什麼是lastRenderedTemplate?它是API的一部分嗎? – testndtv 2016-04-13 11:50:10

相關問題