<template name="FrameItems">
<div class="frame-items">
{{#each frames}}
{{> FrameItem}}
{{/each}}
</div>
</template>
在上面的示例中,我想知道何时呈现了FrameItem
模板中的所有FrameItems
模板。我认为在渲染了所有子模板时会调用父项的onRendered
,但它刚刚被调用。确保渲染所有子模板的传统方法是什么?
答案 0 :(得分:0)
一种方法是使用计数器并将其递增,直到达到某个值
这里的计数器将在__FILE__
中递增,直到达到Session
可迭代事物的长度:
Frames
然后你只需使用一个跟踪器:
Template.FrameItems.onRendered(function() {
Session.set('frameCounter', 0);
});
Template.FrameItem.onRendered(function() {
Session.set('frameCounter', Session.get('frameCounter') + 1);
});
请注意,它考虑了//Where template is your template instance, for example 'this' in an onCreated callback
template.autorun(function doStuffWhenFramesRendered(computation) {
if(Session.get('frameCounter') === template.frames.length) {
doStuff();
//Stop observing
computation.stop();
}
});
可能在奇怪时间呈现(避免竞争条件,如果有)的事实,但它没有考虑新的帧。要考虑到这些因素,您不会停止FrameItem
。