2013-02-04 177 views
1

我試着通過閱讀Todo-List示例中如何處理標籤以及如何在締約方示例中處理RSVPS來解決這個問題,但我無法弄清楚實現我的目標的一般方法。 我有一個計劃收集具有名稱OWNERID和excerciselist通過索引訪問數組

Plans.insert({名稱:名稱[I]中,OWNERID:1,excerciselist:excercises});

現在在這個Excerciselist中,我想通過ID添加一個未定義的ExactcAmout。 我有一個Excercisecollection具有以下:

Excercises.insert({名稱:名稱[I],肌肉:肌肉[I]中,設備:設備[I]中,描述:說明[I]});

現在所有這些練習在缺省情況下都有一個唯一的_id元素。 將事情添加到excerciselist否問題我可以通過Push來完成。 但我不明白的是,我如何通過它的索引訪問excerciselist中的某些ID。

我只能通過訪問整個字符串數組和輸出在HTML

{{#each planarray}} {{excerciselist}} {{/每}} 但是沒有方法可行做smoething像 {{excerciselist}}

我也曾嘗試只excerciselist返回planarray,但問題是,因爲它是唯一索引,而不是映射它不能由LiveHTML訪問。

有沒有人有一個想法如何解決這個問題?

回答

0

爲什麼不在Excersies插入中添加唯一標識的字段?

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

這樣你就可以根據uniqueID字段得到你想要的鍛鍊。

哦,你應該可能稱之爲「唯一ID」的東西更有意義。

+0

像我已經說過,每一個條目已經作爲uniqueid in _id – MMB

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}} 

例子,但必須有一個更有效的還是不錯的方式....至少我希望如此!