2012-02-22 17 views
9

wiem jak skonstruować obiekt jQuery z widokiem Ember, która jest w DOM:Get Ember Widok z obiektu 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> 

Jak o zrobieniu odwrotność. Biorąc pod uwagę obiekt jQuery, jak uzyskać odpowiedni obiekt Ember View.

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

Odpowiedz

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

jak o uzyskanie instancji składnika z elementu DOM? - Zauważam, że nie ma id. Czy powinienem jakoś to określić? – shaunc

+1

@shaunc: Przetestowałem powyższą metodę na komponencie. Ponieważ 'Component' jest podklasą' View', to * powinno * mieć id i być obecne w 'Ember.View.views'. – theazureshadow

+0

Począwszy od wersji 1.13 ember, uzyskanie widoku musi odbywać się poprzez rejestr widoku: 'container.lookup ('- view-registry: main') [id]' –