Подтвердить что ты не робот

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

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

Спасибо.

4b9b3361

Ответ 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();
  });
};

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

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