2012-02-22 44 views
9

tôi biết làm thế nào để xây dựng một đối tượng jQuery từ một cái nhìn Ember là trong DOM:Nhận Ember Xem từ jQuery đối tượng

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> 

Làm thế nào về làm nghịch đảo. Cho một đối tượng jQuery, làm thế nào để có được đối tượng Ember View tương ứng.

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

Trả lời

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

làm thế nào để nhận được một thành phần cấu thành từ phần tử dom? - Tôi nhận thấy nó không có id. Tôi có nên chỉ định một cách nào đó không? – shaunc

+1

@shaunc: Tôi đã thử nghiệm phương pháp trên trên một thành phần. Vì 'Component' là một lớp con' View', nó * nên * có một id và có mặt trong 'Ember.View.views'. – theazureshadow

+0

Kể từ ember 1.13, việc xem phải được thực hiện thông qua đăng ký xem: 'container.lookup ('- view-registry: main') [id]' –

Các vấn đề liên quan