Meteor.js中的自定义{{#eachIndex}}

时间:2014-10-11 11:25:10

标签: javascript meteor spacebars

我尝试使用索引实现每个:{{#eachIndex}},但我发现的所有代码示例似乎都已被弃用:

UI.registerHelper('eachIndex', function () {
    var withIndex = _.map(this, function(x, i) {
        x.index = i;
        return x;
    });
    return UI.Each(function() {
        return withIndex;
    }, UI.block(null), UI.block(null));
});

UI.block未定义。

我有另一个片段试图将参数传递给模板,但它也失败了,所以我的猜测是我完全错了:

UI.registerHelper('clearfix', function () {
    return UI.With((function() {
        return {attributes:{class:this.col}};
    }), Template._clearfix);
});

1 个答案:

答案 0 :(得分:0)

对于第一个助手,您不需要显式调用UI.each,而是要做的是返回数据(以及索引)并使用把手在模板中迭代它们。例如:

UI.registerHelper('eachIndex', function () {
    var items = Items.find().fetch();
    var withIndex = _.map(items, function(x, i) {
        x.index = i;
        return x;
    });
    return withIndex;
});

在模板中:

{{#each eachIndex}}
    {{someProperty}}
    {{index}}
{{/each}}

将参数传递给模板非常简单:

{{> templateName var=someVar}}