2015-04-27 10 views
5

Come di recente tutta la documentazione di meteoriti afferma che onRendered è un nuovo modo per ottenere un callback quando il modello ha finito il rendering. e rendered è solo per compatibilità con le versioni precedenti.Meteor.js onRendered & rendered

Tuttavia, questo non sembra funzionare per me. onRendered non viene mai eseguito, mentre lo fa rendered. Ho versione più recente di meteoriti 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 

e entrambe le funzioni in azione che si può vedere in questo github repo. Sto facendo qualcosa di sbagliato, o questo è un difetto in onRendered?

e seconda domanda - ragione per cui ho iniziato a indagare su questo - come posso eseguire codice ogni volta che un elemento dom viene aggiunto/rimosso al mio modello? rendered non sembra essere chiamato quando ciò accade. C'è un altro modo?

risposta

11

onRendered assume una funzione come argomento . Prova a modificare:

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

Con questo cambiamento, si dovrebbe trovare entrambi saranno chiamati rendered e onRendered. Si noti inoltre che ora è possibile aggiungere più callback onRendered per un determinato modello.

+0

proverà tra un momento. E seconda domanda? –

+1

@MartinsUntals è possibile utilizzare un modello annidato contenente dom che viene rimosso e aggiunto con una richiamata onRendered su di esso. Oppure puoi usare il gancio di aggancio se stai provando ad animare un'animazione (demo: https://github.com/RainHaven/meteor-ui-hooks-demo/blob/master/simple-todos.js#L45- L62) Il modello nidificato – Akshat

+0

funziona! –