我已經得到了通過服務器發送了一些數據,格式如下: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項。 –