减速Meteor页面渲染辅助函数

时间:2014-09-10 18:48:30

标签: javascript jquery meteor

我想在Meteor JS辅助函数中使用jQuery计算表子项的位置,但我总是得到一个空结果,因为辅助函数在插入表数据之前返回。

这是我的代码:

<table class="table">
                <thead>
                <tr>
                    <th>#</th>
                    <th>Game</th>
                </tr>
                </thead>
                <tbody>
                    {{#each games}}
                        {{> game}}
                    {{/each}}
                </tbody>
</table>


    <template name="game">
        <tr>
            <td>{{counter}}</td>
            <td>{{name}}</td>
        </tr>
    </template>

Template.game.helpers({
    counter: function() {
        return $('table.table tbody tr td:contains("this.name")').index();
    }
});

应该是这样的: 1测试 2 ABC 3 HelloWorld ...

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

解决方案的想法是将游戏对象添加到名为index的附加字段中。 稍后在game模板中,您只需使用{{index}}

下面的代码可以解决您的问题:

var games_with_index = Games.find().map(function(document, index){
    document.index = index;
    return document;
});

<table class="table">
   <thead>
        <tr>
            <th>#</th>
            <th>Game</th>
        </tr>
    </thead>
    <tbody>
        {{#each games_with_index}}
          {{> game}}
        {{/each}}
    </tbody>
</table>

<template name="game">
    <tr>
        <td>{{index}}</td>
        <td>{{name}}</td>
    </tr>
</template>

另见: Print the loop index in Meteor.js templates