我有一个控制器,它返回二维对象数组作为json。我从我的javascript打来电话:
$.getJSON("/Game/GetBoard", function (json) {
data = json;
board = ko.mapping.fromJS({ board: data });
ko.applyBindings(board, $('.board')[0]);
});
我还有以下html:
<table>
<tbody data-bind="foreach: board">
<tr data-bind="foreach: $data">
<td data-bind="attr: { class: Color }"></td>
</tr>
</tbody>
</table>
它生成一个漂亮的2维html表,其中包含颜色很好的单元格(基于来自Color属性的类)。我现在怎样才能将这种颜色更改为其他颜色?
我试过:board[1][1]({Color: 'red'});
,但是我收到一条错误,说电路板[1]不存在......
另一个问题是,如何在绑定中添加多个类?我试过了:
...
<td data-bind="attr: { class: Color + ' some-other-class' }"></td>
...
但后来我得到了:
class="function b() { if (0 < arguments.length) { if (!b.equalityComparer || !b.equalityComparer(d, arguments[0])) { b.H(), d = arguments[0], b.G(); } return this; } r.T.Ha(b); return d; } some-other-class"
这是一个错误还是我做错了什么?
答案 0 :(得分:3)
映射插件会将您的数组转换为observableArray,并将您的属性转换为可观察数据。
对于第一种情况,您需要执行以下操作来展开可观察数组:board.board()[1][1]
对于另一个问题,颜色是可观察的。如果您在表达式中使用它并想要获取其值,那么您需要执行Color()。所以,它看起来像:
<td data-bind="attr: { class: Color() + ' some-other-class' }"></td>