2012-06-23 10 views
22

Wiem, że meteor powoduje zdarzenia takie jak "kliknięcie", dla elementu DOM, ale zastanawiam się, czy istnieje zdarzenie obciążenia, które jest uruchamiane, gdy załadowany jest szablon lub częściowy? Jak to osiągnąć?Zdarzenie pobierania szablonu dla meteor.js

Dzięki.

Odpowiedz

42

Dla Meteor począwszy od podglądu 0.4.0 można użyć Template.myTemplate.created.

W modelu Template.myTemplate.created DOM nie jest jeszcze gotowy.

Jeśli trzeba manipulować DOM, może chcesz używać i używać zamiast Template.myTemplate.rendered wartość logiczną śledzić stan wewnątrz obiektu szablonu tak:

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

"Template.myTemplate.rendered" jest przestarzałe od Meteor 1.0.4. Mimo że jest on nadal obsługiwany z myślą o zgodności wstecznej, możesz użyć 'Template.myTemplate.onRendered' dla nowszych wersji. [Źródło] (https://github.com/meteor/meteor/blob/devel/History.md#blaze-2) – Iwazaru

11

Podążanie powinno działać.
Meteor.defer zostanie wywołany, gdy szablon zostanie dodany do DOM i wyrenderowany.

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

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

bardzo sprytny trik! Dzięki, @Nachiket. – Gezim

+3

Od wersji 1.1.0.2 ten wzorzec jest przestarzały. Zamiast tego użyj 'Template.temp.helpers (...)'. – 10basetom

4

Polecam ten zamiast przyjętej odpowiedź, nieznacznie mniej IMHO brutto:

<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(); 
    }); 
}; 

Założeniem jest, że chcesz, aby wywołać coś po załadowaniu szablonu, bo to reakcję z reaktywną obiektu .

Korzyścią jest to, że nie dodajesz kodu animacji do szablonu.

+1

jest to praktycznie ta sama odpowiedź, którą Nachiket's – Octopus

Powiązane problemy