2015-02-09 73 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