2012-02-22 21 views
9

sé cómo construir un objeto jQuery desde un punto de vista Ember que está en el DOM:Obtener Ember Vista desde jQuery objeto

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> 

¿Qué hay de hacer la inversa. Dado un objeto jQuery, ¿cómo obtengo el objeto Ember View correspondiente?

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

Respuesta

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

la forma de conseguir una instancia de componente del elemento DOM? - Noté que no tiene identificación. ¿Debo especificar uno de alguna manera? – shaunc

+1

@shaunc: Probé el método anterior en un componente. Como 'Component' es una subclase' View', * debe * tener una identificación y estar presente en 'Ember.View.views'. – theazureshadow

+0

A partir de la fecha 1.13, obtener la vista debe hacerse a través del registro de vista: 'container.lookup ('- view-registry: main') [id]' –

Cuestiones relacionadas