我有一个像这样的淘汰对象,
this.results = [
{ name: 'aaa', display: true },
{ name: 'bbb', display: false },
{ name: 'ccc', display: true},
{ name: 'ddd', display: true},
{ name: 'eee', display: true}
];
我必须以这种表格格式填充数据,每行有两个单元格。
"名称"只有在"显示"财产是真的。由于$ index在这种情况下不起作用,我该如何实现呢?
<table>
<tr>
<td>aaa</td>
<td>ccc</td>
</tr>
<tr>
<td>ddd</td>
<td>eee</td>
</tr>
</table>
感谢。
答案 0 :(得分:2)
您应该将结果配对并绑定到结果的配对视图。
如果不使用第三方库进行配对,您需要执行以下操作:
this.pairedResults = ko.dependentObservable(function () {
var pairedResults = [], currentResult;
ko.utils.arrayForEach(this.results(), function (result) {
if (result.display()) {
if (!currentResult) {
currentResult = {
results: [ result ]
};
} else {
currentResult.results.push(result);
pairedResults.push(currentResult);
currentResult = null;
}
}
});
if (currentResult) {
pairedResults.push(currentResult);
}
return pairedResults;
}, this);
然后绑定到您的视图:
<table>
<tbody data-bind="foreach: pairedResults">
<tr data-bind="foreach: results">
<td data-bind="text: name"></td>
</tr>
</tbody>
</table>
答案 1 :(得分:0)
您的桌子与您的模型并不匹配。我将name2添加到额外列的模型中。
在这种情况下,您不需要引用索引。你要做的是在行上使用if绑定。
<table>
<thead>
<tr>
<th>Name1<th>
<th>Name2</th>
<tr>
</thead>
<tbody data-bind="foreach: results">
<tr data-bind="if: display">
<td data-bind="text: name"><td>
<td data-bind="text: name2"><td>
<tr>
</tbody>
</table>