2012-04-17 9 views
7

Tengo una aplicación Ember.js. En la plantilla principal, tengo un botón de ayuda que, al hacer clic, debe mostrar una información sobre herramientas de CSS. Tengo la información sobre herramientas es una plantilla separada de manubrios.¿Cómo puedo insertar dinámicamente una nueva plantilla en el DOM con Ember?

Lo que trato de hacer es manejar el evento click para insertar la ventana emergente en el DOM y mostrarla. No puedo descubrir cómo insertar nuevas plantillas en el DOM usando Ember.

Aquí es mi plantilla en la que aparece el botón de ayuda:

<div id="status_help" class="icon_help" {{action "helpClicked"}}></div> 

Aquí es mi opinión primaria:

var checkbox = Ember.Checkbox.extend({ 
    templateName: 'checkbox', 
    helpClicked: function(e) { 
     // Not sure what to do here 
    } 
})); 

var tooltip = Ember.View.extend({ 
    templateName: 'tooltip' 
}); 

así que no estoy seguro de qué hacer en el controlador de eventos para hacer que la información sobre herramientas plantilla e inyectarlo en el DOM para mostrar.

Respuesta

12

Puede crear una nueva vista y anexarla al DOM usando Ember.View's append o appendTo métodos.

App.MyView = Ember.View.extend({ 
    templateName: 'a_template' 
}) 

var view = App.MyView.create(); 

// Append the view to the document body 
view.append(); 
// ...or append to any element described using 
// a jQuery-compatible selector. 
view.appendTo('#my-div'); 
+0

También hay un método 'replaceIn', ver https://github.com/emberjs/ember.js/blob/255bd707a73c905fa6e14ac76f134642e9802667/packages/ember-views/lib/views/view.js#L704- 724. – pangratz

+1

Lo estaba haciendo al revés. Estaba llamando append en la vista principal para intentar agregar el elemento secundario. Voy a dar una oportunidad, gracias. –

+1

¿Cómo se haría esto en Ember 2.x ahora que las Vistas han quedado en desuso? – tojofo

Cuestiones relacionadas