2012-06-23 11 views
22

Sé que el meteorito expone eventos como "clic", para elemento DOM pero me pregunto si hay un evento de carga que se activa cuando se carga una plantilla o parcial. ¿Cómo podría lograr esto?Evento de carga de plantilla para meteor.js

Gracias.

Respuesta

42

Para Meteor a partir de la vista previa de 0.4.0, puede usar Template.myTemplate.created.

En Template.myTemplate.created, el DOM no está listo.

Si necesita manipular el DOM, es posible que desee utilizar Template.myTemplate.rendered lugar y utilizar un valor booleano para realizar el seguimiento del estado dentro del objeto plantilla así:

Template.myTemplate.rendered = function() { 
    if(!this._rendered) { 
     this._rendered = true; 
     console.log('Template onLoad'); 
    } 
} 
+3

'Template.myTemplate.rendered' está en desuso desde Meteor 1.0.4. Si bien todavía es compatible con la compatibilidad con versiones anteriores, es posible que desee utilizar 'Template.myTemplate.onRendered' para las versiones más recientes. [Fuente] (https://github.com/meteor/meteor/blob/devel/History.md#blaze-2) – Iwazaru

11

El siguiente debería funcionar.
Se llamará Meteor.defer una vez que la plantilla se haya agregado a DOM y se haya procesado.

<template name="temp"> 
    //regular stuff 
    {{invokeAfterLoad}} 
</template> 

Template.temp.invokeAfterLoad = function() { 
    Meteor.defer(function() { 
    $('mydiv').jquerify(); 
    }); 
    return ""; 
}; 
+1

truco muy inteligente! Gracias, @Nachiket. – Gezim

+3

A partir de v1.1.0.2 este patrón está en desuso. Use 'Template.temp.helpers (...)' en su lugar. – 10basetom

4

Lo recomendaría este lugar de la respuesta aceptada, un poco menos en mi humilde opinión bruto:

<template name="temp"> 
    {{aReactiveHelper}} 
</template> 

Template.temp.aReactiveHelper = function() { 
    var someValue = Session.get('someValue'); 
    invokeAfterLoad(); 
    return someValue; 
}; 

var invokeAfterLoad = function() { 
    Meteor.defer(function() { 
    $('mydiv').doSomething(); 
    }); 
}; 

La suposición es que desea invocar algo después de las cargas de la plantilla, ya que está reaccionando a un objeto reactiva .

El beneficio aquí es que no está agregando código de animación a su plantilla.

+1

esta es prácticamente la misma respuesta que una Nachiket – Octopus

Cuestiones relacionadas