2015-04-27 16 views
5

W międzyczasie cała dokumentacja meteorów stwierdza, że ​​onRendered jest nowym sposobem uzyskania wywołania zwrotnego po zakończeniu renderowania szablonu. i rendered służy jedynie do kompatybilności wstecznej.Meteor.js onRendered & renderowany

Jednak to po prostu nie działa dla mnie. onRendered nigdy nie zostanie wykonany, natomiast rendered ma. Mam najnowsza wersja Meteor 1.1.0.2

//only this is executed 
Template.hello.rendered = function(){ 
    console.log('rendered'); 
} 

//and this is not 
Template.hello.onRendered = function(){ 
    console.log('onRendered'); 
} 
//even if I comment first one out 

i obie funkcje w akcji można zobaczyć w tym github repo. Czy robię coś nie tak, lub jest to usterka onRendered?

i drugie pytanie - powód dla którego zacząłem się nad tym zastanawiać - w jaki sposób mogę wykonać kod za każdym razem, gdy element dom jest dodawany/usuwany do mojego szablonu? rendered nie wydaje się być wywoływany, gdy tak się stanie. Czy jest jakiś inny sposób?

Odpowiedz

11

onRendered przyjmuje funkcję jako argument . Spróbuj to zamiast:

Template.hello.onRendered(function() { 
    console.log('onRendered'); 
}); 

Dzięki tej zmianie, należy znaleźć zarówno rendered i onRendered zostanie wywołana. Zwróć też uwagę, że możesz teraz dodawać wiele wywołań zwrotnych od onRendered dla danego szablonu.

+0

spróbuj za chwilę. I drugie pytanie? –

+1

@MartinsUntals można użyć zagnieżdżonego szablonu zawierającego dom, który został usunięty i dodane z onRendered callback na nim. Lub możesz użyć haków Ui, jeśli próbujesz uruchomić animację (demo: https://github.com/RainHaven/meteor-ui-hooks-demo/blob/master/simple-todos.js#L45- L62) – Akshat

+0

zagnieżdżony szablon działa! –

Powiązane problemy