meteorがDOM要素の「クリック」などのイベントを公開することは知っていますが、テンプレートまたはパーシャルがロードされたときに発生するロードイベントがあるかどうか疑問に思っていますか?どうすればこれを達成できますか?
ありがとう。
meteorがDOM要素の「クリック」などのイベントを公開することは知っていますが、テンプレートまたはパーシャルがロードされたときに発生するロードイベントがあるかどうか疑問に思っていますか?どうすればこれを達成できますか?
ありがとう。
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');
}
}
以下が機能するはずです。
テンプレートが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();
});
};
テンプレートがリアクティブオブジェクトに反応するため、テンプレートのロード後に何かを呼び出したいと想定しています。
ここでの利点は、テンプレートにアニメーションコードを追加しないことです。