如何在流星上的HTML上将一个数组中的项目显示在另一个数组中?

时间:2018-07-30 08:42:59

标签: javascript html arrays meteor spacebars

这是我的js代码:

Template.listModules.helpers({
    'item' : function() {
        var currentUser = Meteor.userId();
        var stuff = Events.find(
        {
            createdBy: currentUser,
            startDate: { $gte: new Date() }
        }, {sort: {module:1, startDate:1}}).fetch();
        var displayArray = testing();
        return displayArray;
    },
});

function testing(){
    var currentUser = Meteor.userId();
     var array = Events.find(
        {
            createdBy: currentUser,
            startDate: { $gte: new Date() }
        }, {sort: {module:1, startDate:1}}).fetch();

     var finalArr = [];
     var currentArr = [];
     currentArr.push(array[0]);
     for (var i = 1; i < array.length; i++) {
        if(array[i].module == array[i-1].module){
            currentArr.push(array[i])
        } else {
            finalArr.push(currentArr);
            currentArr=[];
            currentArr.push(array[i]);
        }
        if(i+1 == array.length){
            finalArr.push(currentArr);
        }
    };
    console.log(finalArr);
    return finalArr;
}

这是我当前的HTML代码:

<template name="listModules">
    <h2>List of Modules</h2>
    <ul>
    {{#each item}}
        <li>{{module}}</li>
    {{/each}}
    </ul>
</template>

![这是我当前拥有的finalArr] https://ibb.co/jAyWDo

例如,如何在前端,html侧显示模块字符串。我已经在线阅读了一些人设法通过给数组一个ID并将其作为{{#each id}}来做到这一点,但是我不太确定如何在此处给数组一个ID。

我的目标是执行2个循环,以便将3个数组分成3个文本框,并将它们的内容显示在单独的框中。

1 个答案:

答案 0 :(得分:0)

finalArr必须改为是集合而不是数组(称为finalCollection)。像这样初始化:

  

finalCollection = new Mongo.Collection(null);

,然后插入内容

  

finalCollection.insert({arr:currentArr});

请注意,每个项目都有一个ID! 将所有内容放入集合后,通过执行以下操作返回所有内容

  

返回finalCollection.find({});

HTML必须使用此对象来获取模块

<template name="listModules">
    <h2>List of Modules</h2>
    <ul>
    {{#each item}}
        <li>{{this.module}}</li>
    {{/each}}
    </ul>
</template>

这是一个丑陋的方法。希望对您有所帮助。