1

我尝试通过阅读 Todo-List 示例中如何处理标签以及如何在各方示例中处理 RSVPS 来弄清楚这一点,但我无法找到实现目标的一般方法。我有一个计划集合,其中包含名称 ownerid 和 excerciselist

Plans.insert({name: names[i], ownerId: 1, excerciselist: excercises});

现在在这个 Excerciselist 中,我想按 ID 添加一个未定义的 Excercises 数量。我有一个 Excercisecollection 包含以下内容:

Excercises.insert({name:names[i],muscle:muscle[i],device:devices[i],description:descriptions[i]});

现在所有这些练习默认都有一个唯一的 _id 元素。向 excerciselist 添加东西没问题,我可以通过 Push 做到这一点。但我不知道的是,我如何只能通过它的索引访问 excerciselist 中的某些 ID。

我只能通过 HTML 访问整个 Stringarray 和输出

{{#each planarray}} {{excerciselist}} {{/each}} 但不可能像 {{ excerciselist }}

我也试过只返回 excerciselist 到 planarray,但问题是因为它只是索引而不是映射它不能被 LiveHTML 访问。

有谁知道如何解决这个问题?

4

2 回答 2

0

为什么不将唯一 id 字段添加到 Excersies 插入?

Excercises.insert({ uniqueID: [i], name: names[i], muscle: muscles[i], device: devices[i], description: descriptions[i]});

这样,您就可以根据 uniqueID 字段获得所需的练习。

哦,您可能应该将“uniqueID”称为更有意义的东西。

于 2013-02-04T11:50:12.270 回答
0

我发现了一个小解决方法,这与我的想法不完全一样,但它可以完成工作。

  Template.editplan.excercises = function() {
    var names = [];
    var add = [];
    var adder = null;
    for(var i = 0; i < this.excerciselist.length; i++)
    {
      add[i] = [];
      adder = Excercises.find({_id: this.excerciselist[i]});
      add[i]['_id'] = this.excerciselist[i];
      add[i]['location'] = i;
      adder.forEach(function (obj) {
        add[i]['name'] = obj.name;
      });
      names.push(add[i]);
    }
    return names;
  };

基本上我创建了一个新数组,在其中放置了我想要的数据,以便我可以在 LiveHTML 中读取它,请参见下面的示例

{{#each planarray}}
        <h1>{{name}}</h1>
        {{#each excercises}}
        {{name}}
        {{/each}}
        <select name="selectedexcercise{{_id}}" id="selectedexcercise{{_id}}">
            {{> excerciseoption}}
        </select>
        <input type="button" class="addtoplan" value="Eine Übung hinzfügen">
    {{/each}}

但是必须有更有效或更好的方法....至少我希望如此!

于 2013-02-21T14:20:57.957 回答