我已经得到了通过服务器发送了一些数据,格式如下:Knockout.js - 添加属性将数据发送服务器端
[
{"Username":"[email protected]", "id":1},
{"Username":"[email protected]", "id":2},
{"Username":"[email protected]", "id":3}
]
我把它绑定到一个表,但我想的能力,当复选框被选中时(表示它已被选中),将一个类添加到表格行。以下是最终的工作原理,我知道问题在于Selected
不属于我的数据。
<table>
<tbody data-bind="foreach: Items">
<tr data-bind="css:{selected: Selected}">
<td>
<input type='checkbox' data-bind="attr:{name: id}, checked: Selected" />
</td>
<td data-bind="text: Username"> </td>
</tr>
</tbody>
</table>
由于Selected
概念的东西纯粹是为了UI,似乎有点愚蠢到让服务器发送通过线路在我的数据的每个项目。
我想发生基本上是这样的:http://jsfiddle.net/xSSMX/但不必添加每个项目的可观察Selected
财产。
如何向数据中的每个现有项目添加属性以实现此目的?
我喜欢这个答案,因为我不需要改变我的数据,但是我对性能感到有点担心,并且在每个返回的项目中循环。这对于可能的数百个(可能高达1500个)项目来说足够高性能吗? –
考虑到循环中实际上做得很少,它应该足够高性能。唯一的另一种选择是编辑/再现所有敲除绑定,以便在遇到不属于视图模型的属性时按照您希望的方式行事,也就是说,如果未找到该属性,则该属性为false,但如果需要将其设置为true,存在将其添加到视图模型。我可能会把今天晚些时候我的意思放在一起。 – MHollis
嗯,好的谢谢。我可能会在'map'函数中做更多的事情(因为这只是一个例子的一小段代码),所以这就是我想知道的原因。到目前为止,我正在使用它,它的工作将与约200项。 –