2013-02-21 8 views
10

このcommitはIDが2回あるビューを登録できません。これは論理的です。しかし、私は問題がある。すでに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を期待したが、私は次のエラーました:私は二度同じIDを持つビューをインスタンス化する必要はありません

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

を。私は魔法使いが実際のものを破壊し、新しいものを作成したいだけです。

+0

を私は古いビューがDOMにまだある、まだエンバーに登録したときにエンバーは、新しいビューをインスタンス化するtrysと思います。新しい新しいビューが作成され、elementIdが割り当てられます。現時点では、同じIDを持つ2つのViewオブジェクトがありますが、DOMには1つしかありません。なぜあなた自身でelementIdを定義する必要がありますか?私は速い回避策があると思います。 – mavilein

答えて

3

現在のバージョンではバグのようです。チケットを開けてください。 これが修正されるまで、これは役立つかもしれない:

App.ContactShowRoute = Ember.Route.extend({ 

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

lastRenderedTemplateとは何ですか?それはAPIの一部ですか? – testndtv

関連する問題