MeteorがDOM要素の「クリック」などのイベントを公開していることを知っていますが、テンプレートまたはパーシャルがロードされたときに発生するロードイベントがあるかどうか疑問に思っていますか?どうすればこれを達成できますか?
ありがとう。
Meteorが0.4.0プレビューから始まる場合は、 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');
}
}
以下は動作するはずです。
テンプレートがDOMに追加されてレンダリングされると、Meteor.deferが呼び出されます。
<template name="temp">
//regular stuff
{{invokeAfterLoad}}
</template>
Template.temp.invokeAfterLoad = function () {
Meteor.defer(function () {
$('mydiv').jquerify();
});
return "";
};
私は受け入れられた答えよりもこれをお勧めします、少し少ない私見:
<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();
});
};
テンプレートは、リアクティブオブジェクトに反応するため、テンプレートの読み込み後に何かを呼び出すことを想定しています。
ここでの利点は、テンプレートにアニメーションコードを追加しないことです。