Событие загрузки шаблона для meteor.js

Я знаю, что метеорит предоставляет такие события, как "click", для элемента DOM, но мне интересно, есть ли событие загрузки, которое запускается при загрузке шаблона или частичного? Как бы это сделать?

Спасибо.

Ответ 1

Для Meteor начиная с предварительного просмотра 0.4.0 вы можете использовать Template.myTemplate.created.

В Template.myTemplate.created DOM еще не готов.

Если вам нужно манипулировать DOM, вы можете вместо этого использовать Template.myTemplate.rendered и использовать логическое значение для отслеживания состояния в пределах Шаблон объекта выглядит следующим образом:

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

Ответ 2

Следующее должно работать.
Meteor.defer вызывается, как только шаблон добавляется в DOM и отображается.

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

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

Ответ 3

Я бы рекомендовал это, а не принятый ответ, чуть менее грубо ИМХО:

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

Предполагается, что вы хотите вызвать что-то после загрузки шаблона, поскольку оно реагирует на реактивный объект.

Преимущество здесь заключается в том, что вы не добавляете в свой шаблон анимационный код.