我尝试通过阅读Todo-List示例中的标签处理方式以及如何在缔约方示例中处理RSVPS来解决这个问题,但我无法找到实现目标的一般方法。 我有一个计划集合,其名称为ownerid和excerciselist
Plans.insert({name:names [i],ownerId:1,excerciselist:excercises});
现在在这个Excerciselist中,我想通过ID添加未定义的Amout of Excercises。 我有一个Excercisecollection,其中包含以下内容:
Excercises.insert({name:names [i],muscle:muscles [i],device:devices [i],description:descriptions [i]});
现在所有这些练习都默认具有唯一的_id元素。 添加到excerciselist没有问题我可以通过推送做到这一点。 但我无法弄清楚的是,我如何只能通过它的索引访问excerciselist中的某些ID。
我只能通过
访问整个Stringarray并以HTML格式输出{{#each planarray}} {{excerciselist}} {{/每}} 但是没有可能做像smoething一样 {{excerciselist}}
我也试过只将excerciselist返回到planarray,但问题是因为它只是索引而没有映射,所以LiveHTML无法访问它。
有没有人知道如何解决这个问题?
答案 0 :(得分:0)
为什么不为Excersies插入添加唯一ID的字段?
Excercises.insert({ uniqueID: [i], name: names[i], muscle: muscles[i], device: devices[i], description: descriptions[i]});
通过这种方式,您可以根据uniqueID字段获得所需的练习。
哦,你应该把“uniqueID”称为更有意义的东西。
答案 1 :(得分: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}}
但必须有一种更有效或更好的方式......至少我希望如此!