我刚刚开始制作一个陨石包,它将组/标题添加到列表中
See demo here。
Source code for demo is here
基本上,我想要做的是等待列表完全填充,然后调用一个设置标题/组等的方法。我现在的方法是在{{1}之后调用一个把手助手。 } loop,像这样:
{{#each}}
<ul>
{{#each listItems }}
{{> listItem }}
{{/each}}
</ul>
{{ groupList }}
帮助程序在循环运行后执行我想要运行的代码(设置标题的代码)。
这感觉有点难看,而我认为我更喜欢的是对groupList
循环的回调,它在完成迭代后被调用(并且重要如果循环中的项目发生变化)
有点类似于模板的rendered()方法我猜
(我当然已经尝试过render()方法,但是在循环运行之前就已经执行了。)
有这样的回调吗?还是其他一些技术,比我目前用于把手助手的技术要差一些?
答案 0 :(得分:2)
不是让Blaze渲染列表然后使用JQuery添加标题,而是可以在模板本身中进行分组和标题,如下所示:
<template name="grouped">
{{#each groups}}
<h2>{{heading}}</h2>
{{#each items}}
{{> item}}
{{/each}}
{{/each}}
</template>
Template.grouped.groups = function () {
return _.chain(ListItems.find().fetch())
.groupBy("wins")
.pairs()
.map(function (pair) {return {heading: pair[0], items: pair[1]};})
.value();
};
这似乎更多&#39; Meteoric&#39;对我来说 - 命令式DOM操作通常是Meteor中的错误方法。我不确定性能如何比较。