2012-02-22 7 views
9

からエンバービューを取得します。私はDOMであるエンバービューからjQueryオブジェクトを構築する方法を知っているjQueryオブジェクト

App.myView = Ember.View.extend({ 
    elementId: "my_view", 

    didInsertElement: function(){ 
    console.log(this.$().attr('id')) // outputs 'my_view' 
    } 
}); 


<!-- HTML output --> 

<div id="my_view"> 
    <!-- ... --> 
</div> 

どのように逆をやって。 jQueryオブジェクトが与えられた場合、対応するEmber Viewオブジェクトを取得するにはどうすればいいですか? DOM要素からコンポーネントのインスタンスを得ることについて

function(selector){ 
    $el = $(selector); 
    // ??? 
} 

答えて

28
function getClosestEmberView($el) { 
    var id = $el.closest('.ember-view').attr('id'); 
    if (!id) return; 
    if (Ember.View.views.hasOwnProperty(id)) { 
    return Ember.View.views[id]; 
    } 
} 
+0

か? - それはIDがないことに気付く。私は何とか何かを指定すべきですか? – shaunc

+1

@shaunc:コンポーネント上で上記のメソッドをテストしました。 'Component'は' View'サブクラスなので、idは 'Ember.View.views'になければなりません。 – theazureshadow

+0

ember 1.13からビューを取得するには、viewレジストリを使用する必要があります。 'container.lookup( ' - view-registry:main')[id]' –

関連する問題