Meteor - 新列表条目上的增量计数器:

时间:2015-12-26 02:21:03

标签: javascript html meteor html-lists

我正在开发一个允许用户输入列表的小项目,然后遍历列表,测量每个列表项上花费的时间。目前我无法识别各个列表元素以分别为它们分配,增量函数应该为每个列表条目添加唯一ID,但它似乎冻结在第一个列表项上并无限增加。任何人都有人建议为什么会出现这种情况或更好的解决方案? (请原谅可怕的Javascript)谢谢!

HTML:

<body>
<ul>
        {{#each travellists}}
            {{> travellist}}
        {{/each}}   
</ul>
</body>

<template name="travellist">
    <li style="list-style-type: none;" class = "{{selectedClass}}">
        <button class="delete">&times;</button>
        {{text}}
        <div>{{increment}}</div>
        {{#if isTrue}}
        <div class="timer"> {{listtime}} </div>
        {{/if}}
        </li>   
</template>

javascript是:

Template.travellist.helpers({
        //return time elapsed for list item
        'listtime': function(){
            return runtime=((timer.time.get()/1000)%10).toFixed(2);
        },
        //change class name of selected item
        'selectedClass': function(){
            var listid = 0;
            listid++;
            return listid;          
        },
        //increment session counter and return value for list
        'increment': function(){
            Session.set("counter", Session.get("counter")+1);
            return Session.get("counter");
        },
    });

1 个答案:

答案 0 :(得分:0)

这里的问题是increment助手依赖于被动会话变量计数器,因此每次counter被更改increment重新运行,导致它自{{1}无限增加}}正在改变counter助手。

最好删除该行:

increment

并仅映射Session.set("counter", Session.get("counter")+1); 以包含索引字段。例如,如果travellists作为名为travelists的游标返回,则返回:

而不是返回myCursor
myCursor

现在,在迭代myCursor.map(function(currentDoc, index, thisCursor){ currentDoc.index = index; return currentDoc; } 时,调用travellists将返回此文档的索引。