2012-02-22 30 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視圖對象。

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

怎麼樣從DOM元素得到一個組件實例? - 我注意到它沒有ID。我應該指定一個嗎? – shaunc 2014-03-20 18:12:00

+1

@shaunc:我在一個組件上測試了上述方法。由於'Component'是一個'View'子類,它*應該*有一個id並存在於'Ember.View.views'中。 – theazureshadow 2014-08-05 21:12:43

+0

從ember 1.13開始,獲取視圖必須通過視圖註冊表完成:'container.lookup(' - view-registry:main')[id]' – 2015-12-29 04:21:31