2015-04-18 1 views
4

После многих часов экспериментов и чтения я до сих пор не понимаю, почему myTemplate.onRendered(function() {...}) вызывается только один раз.Метеор `onRendered` только называется один раз

В зависимости от того, где вы читаете, вы получаете различную информацию, но, по-видимому, ее нужно вызывать каждый раз, когда внутренний HTML изменяется, что не происходит в моих экспериментах, оно называется только один раз и никогда больше, независимо от того, что я делаю.

Реактивные зависимости, похоже, не вызвали его (например, с использованием Meteor.user() внутри обратного вызова onRendered).

ответ

3

onRendered выполнен только на первом рендеринге шаблона, и он не реагирует. Для использования реактивных вычислений, связанных с Template, вы должны использовать template helpers или template.autorun.

Возможно, у вас есть XY problem, попробуйте задать другой вопрос с учетом вашей функции.

+0

Вы правы со своим наблюдением XY. См. Мою фактическую проблему: http://stackoverflow.com/questions/29722721/meteor-reactive-function-for-template-updates –

1

Это нормально. Экземпляр шаблона получает только один раз. Если вы показываете несколько экземпляров (в цикле), каждый экземпляр запускает свой собственный onRendered один раз. Если вы уничтожите экземпляр и вернете его (меню переключателей или вкладки), вы снова вызовете onRendered, потому что шаблон действительно перезагружен.