私はこのコードを持っています:
Template.temp.rendered = function () {
console.log('temp rendered');
}
Web サイトが初期化されたときにのみログに記録されます。
しかし、私はこのようなことをします:
more = function () {
Meteor.subscribe('Videos', Session.get('more_info'));
}
more(); を呼び出すと、テンプレート dom が新しいドキュメントで更新されても、「一時レンダリング」はログに記録されません。次のようなものも試しました:
Template.temp.rerendered = function () {
console.log('temp re rendered');
}
それは動作しません; テンプレートが再レンダリングされたかどうかを知るにはどうすればよいですか?
とりあえずこんなことやってます
$('#list').bind("DOMSubtreeModified",function(){
console.log('template modified'}
//this logs like 200 times, every time the template is re rendered
)
どうすれば流星のようにできますか?
リスト テンプレート:
<template name="list">
{{#each list}}
<a id="{{_id}}" href="/{{category}}/{{_id}}" title="{{vTitle}}">
{{vTitle}}
</a>
{{/each}}
</template>
ヘルパー:
Template.list.helpers({
list : function () {
return Videos.find({},{sort : {date : -1}});
}
})
試した(動作していない):
Template.list.rendered = function () {
this.autorun(function() {
Videos.find();
console.log('template re rendered');
});
}
推奨される解決策 (@richsilv から):
Template.list.rendered = function () {
this.autorun(function() {
Videos.find().count();
console.log('template re rendered');
});
}
また、@Peppe LGのソリューションは、テンプレートがレンダリングされるたびに関数を呼び出す必要があり、自動実行を登録したくない場合に適しています。