2013-11-25 91 views
0

我還是很新的knockout.js和有以下問題:Knockout.js複雜的表數據綁定

http://jsfiddle.net/ToastedSoul/wAyY7/

<td> 
    <!-- what to put here? --> 
</td> 
... 
"TableEntrySet":[ 
       { 
       "DisplayCode":"A", 
       "ColumnCode":"A4", 
       "RowCode":"L1", 
       }, 

我從服務器獲取JSON數據和希望顯示的日期使用一些表格。標有「level b text x.y」的表應該在正確的單元格中包含「DisplayCode」的值(第一個表格:在「A4/L1」a「A」和「A4/S1」a「)。數據永遠不會包含單個單元格的多個條目。

「彙總表」應該將所有先前的表格彼此層疊在一起。所以在這裏,可能會出現單個單元接收多個值的情況(在我的小提琴中:「A4/S1」將會變爲「A」和「V」,「A3/S4」變爲「2V」或「VV」)

我正在尋找一種優雅的方式來填充這些表。因爲我將不得不在後面對表格中的某些列/行/區域進行樣式設計,所以我不需要像在我的小提琴中那樣創建它們(但是如果可能的話,爲什麼不呢)! 。

如果這對你來說太簡單了knockout-pro的: 如果我想在頁面上只有一個表格按鈕「previous」和「next」瀏覽所有填充的表格(包括摘要表格),該怎麼辦?

+0

現在的值和顏色:http://jsfiddle.net/ToastedSoul/wAyY7/13/。我不知道是否有可能避免反覆'levelBItem.getTableEntry(代碼,rowItem.Code)'調用 – ToastedSoul

回答

0

你的問題是,你正在爲最內部的foreach RowNames可觀察數組。每個淘汰賽的foreach是語境:它只有你在通過提供給它的數據的兩個例外是$parent,這使您可以訪問直接父的foreach的數據,如果它存在,並且$root,這使您可以訪問該視圖。模型。由於您需要的數據位於根視圖模型的列表中,因此這兩者在這方面確實無法幫助您。您可以潛在使用$index嘗試拔出其他列表右側的成員,但假設你的RowNames陣列,它有匹配的是指標,這可能並非如此。

一般來說,這裏最好的選擇是簡單地重構,以便實際使用您想要使用的數據而不是RowNames,並找到另一種獲取行標題值的方法。

+0

我試圖將(在映射過程中)我的「TableEntrySets」到的東西更適合(某種關聯數組),這將允許一個簡單的綁定。但我還是很新的淘汰賽/ JavaScript,我沒有成功。我簡化了小提琴,可能有點過分;最初,我只是在行上打圈,而我對四列進行了硬編碼。 – ToastedSoul

+0

這就是主意。也許你可以找到比硬編碼更好的方法,但無論如何,你需要遍歷行。 –