知道何时渲染子模板

时间:2015-07-16 09:23:27

标签: meteor

<template name="FrameItems">
  <div class="frame-items">
    {{#each frames}}
      {{> FrameItem}}
    {{/each}}
  </div>
</template>

在上面的示例中,我想知道何时呈现了FrameItem模板中的所有FrameItems模板。我认为在渲染了所有子模板时会调用父项的onRendered,但它刚刚被调用。确保渲染所有子模板的传统方法是什么?

1 个答案:

答案 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