23

meteorがDOM要素の「クリック」などのイベントを公開することは知っていますが、テンプレートまたはパーシャルがロードされたときに発生するロードイベントがあるかどうか疑問に思っていますか?どうすればこれを達成できますか?

ありがとう。

4

3 に答える 3

42

0.4.0プレビューから始まるMeteorの場合、を使用できますTemplate.myTemplate.created

ただしTemplate.myTemplate.created、DOMでは準備ができていません。

DOMを操作する必要がある場合は、Template.myTemplate.rendered代わりにブール値を使用して、次のようにTemplateオブジェクト内の状態を追跡することをお勧めします。

Template.myTemplate.rendered = function() {
    if(!this._rendered) {
      this._rendered = true;
      console.log('Template onLoad');
    }
}
于 2012-09-03T03:45:51.450 に答える
11

以下が機能するはずです。
テンプレートがDOMに追加されてレンダリングされると、Meteor.deferが呼び出されます。

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

Template.temp.invokeAfterLoad = function () {
  Meteor.defer(function () {
     $('mydiv').jquerify();
  });
  return "";
};
于 2012-06-23T11:42:54.127 に答える
5

受け入れられた答えではなく、これをお勧めします。

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

テンプレートがリアクティブオブジェクトに反応するため、テンプレートのロード後に何かを呼び出したいと想定しています。

ここでの利点は、テンプレートにアニメーションコードを追加しないことです。

于 2012-07-24T16:49:31.547 に答える