2015-02-09 55 views
1

我正在嘗試使用淘汰賽制作矩陣匹配表,但是我堅持關於當前數據綁定與父數據綁定之間的比較。敲除矩陣

這裏是jsfiddle.net/wup9rxeu/4/

<script type="text/html" id="cubeheader-template"> 
<th data-bind="text: $data.Name"></th> 
</script> 

<script type="text/html" id="body-template"> 
<!-- ko foreach: $parent.modeldim --> 
<td>x</td> 
<!-- /ko --> 
</script> 

我想要實現的是,當表中填充x和 - 每個TD的基礎上,modelcubdim數據。

我需要一些指針上的ID對父ID進行比較,如果它是一個比賽,那麼X要不然 -

感謝

+1

我建議在執行一個視圖模型的比較和使用視圖只顯示那些結果。 – 2015-02-09 07:38:04

+0

'f_martinez'回答(輝煌)你的工作在加載前做好檢查,使用綁定處理程序一個不同的方法http://jsfiddle.net/supercool/X82aC/1246/ – 2015-02-09 10:30:11

回答

1

您可以擴展模型轉換的數據來代表每一個細胞表。

// just for easy searching items by its ID 
data.itemById = function(arr, id){ 
    return ko.utils.arrayFirst(arr, function(item){ 
     return item.ID == id; 
    }); 
}; 

// the property that will hold actual data for *every* table row 
// in the format { Name: [Cub Name], Data [array of "x" and "-"] } 
data.series = ko.utils.arrayMap(data.modelcub, function(cub){ 
    var cubdim = data.itemById(data.modelcubdim, cub.ID); 
    return { 
     Name: cub.Name, 
     Data: ko.utils.arrayMap(data.modeldim, function(dim){ 
      var item = cubdim && data.itemById(cubdim.CubeDimension, dim.ID); 
      return item ? "x" : "-"; 
     }) 
    }; 
}); 

然後稍微改變你的標記:

<tbody data-bind="foreach: series">    
<tr> 
    <th data-bind="text: Name"></th> 
    <!-- ko foreach: Data --> 
    <td data-bind="text: $data"></td> 
    <!-- /ko --> 
</tr> 
</tbody> 

,你會得到它的工作就像這裏:http://jsfiddle.net/wup9rxeu/5/

+0

只是輝煌。喜歡你的方法。歡呼聲 – 2015-02-09 10:25:25

+0

非常感謝。正是我需要的。 – 2015-02-09 21:41:23