我的 HTML 代码是:
{{#each slides}}
{{> slide}}
{{/each}}
我的 javascript 助手是:
Template.draggables.slides = function() {
return LiveSlides.find();
};
我已经尝试了 {{#isolate}}
围绕 {{#each}}
语句,以及一个子模板,以及一个组合两者的组合,以及更多的排列。正在重新呈现所有父模板,并且针对集合中的每个对象。所以在第一次加载网页时,如果集合中有 10 个对象,所有父模板都会被渲染。我正在记录这一切。我很确定它不会以这种方式使用常规 session 变量——我认为这是集合的行为很有趣。任何人都知道问题可能是什么?
更新——我刚刚创建了一个新的空白应用程序来测试,我仍然让父模板重新渲染它们自己——这是应用程序的所有内容:
<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 上。它呈现的回调被 children 触发。如果有您要尝试完成的特定用例,请告诉我,我会尝试通过一些建议来扩展我的回答。
关于javascript - Meteor 为模板助手提供的集合中的每个对象多次渲染父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032576/