2015-04-27 1 views
5

В последнее время вся документация о метеорных состояниях, что onRendered - это новый способ получить обратный вызов, когда шаблон завершил рендеринг. и rendered - это просто для обратной совместимости.Meteor.js onRendered & rendered

Однако, похоже, что это не работает для меня. onRendered никогда не выполняется, а rendered делает. У меня есть самые новые Метеор версии 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 

и обе функции в действии вы можете увидеть в этом GitHub repo. Я делаю что-то неправильно, или это дефект inRendered?

и второй вопрос - почему я начал копаться в этом - как я могу выполнять код каждый раз, когда элемент dom добавляется/удаляется в мой шаблон? rendered, похоже, не вызвано, когда это произойдет. Есть ли другой путь?

ответ

11

onRendered принимает функцию в качестве аргумента . Попробуйте вместо этого:

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

С учетом этого изменения, вы должны найти как rendered и onRendered будет называться. Также обратите внимание, что теперь вы можете добавить несколько обратных вызовов onRendered для заданного шаблона.

+0

попытается на мгновение. И второй вопрос? –

+1

@MartinsUntals вы можете использовать вложенный шаблон, содержащий dom, который удален и добавлен с помощью обратного вызова onRendered. Или вы можете использовать крючки ui, если вы пытаетесь получить анимацию (demo: https://github.com/RainHaven/meteor-ui-hooks-demo/blob/master/simple-todos.js#L45- L62) – Akshat

+0

Вложенные шаблонные работы! –