Meteor为模板辅助对象提供的集合中的每个对象多次渲染父对象

Meteor renders parent multiple times for each object in collection provided by template helper

本文关键字:对象 集合 Meteor      更新时间:2023-09-26

我的HTML代码是:

{{#each slides}}
   {{> slide}}
{{/each}}

我的javascript助手是:

Template.draggables.slides = function() {
return LiveSlides.find();
};

我已经围绕{{#each}}语句尝试了{{#isolate}},以及一个子模板,以及两者的组合,以及更多的排列。所有父模板以及集合中的每个对象都将被重新渲染。所以,在第一次加载网页时,如果集合中有10个对象,所有的父模板都将被呈现。我正在把它全部记录下来。我确信它不会以这种方式处理常规会话变量——我认为集合的行为很有趣。有人知道问题出在哪里吗?

更新——我刚刚创建了一个新的空白应用程序进行测试,我仍在让家长模板重新命名——以下是该应用程序的全部功能:

 <body>
  {{> parent}}
</body>
<template name="parent">
    {{>child}}
</template>
<template name="child">
    {{#each desks}}
        <li>{{name}}</li>
    {{/each}}
</template>

Template.parent.rendered = function() {
    console.log('parent rendered');
};
Template.child.desks = function() {
    return Desks.find();
};

我认为这里发生的事情是为每个渲染的子级调用父级"渲染"回调。因此,父级实际上并没有再次被放回DOM中。其呈现的回调正由子级激发。如果你想完成一个特定的用例,请告诉我,我会尝试用一些建议来扩展我的答案。