knockout.js, 매핑 된 2 차원 배열의 값을 변경하는 방법은 무엇입니까?
-
12-11-2019 - |
문제
JSON으로서의 2 차원 배열의 2 차원 배열을 반환하는 컨트롤러가 있습니다.자바 스크립트에서 전화를 걸어 :
$.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 테이블을 생성합니다 (색상 속성에서 오는 클래스를 기반으로 함).이제이 색을 다른 것으로 어떻게 변경할 수 있습니까?
나는 board[1][1]({Color: 'red'});
를 시도했지만, 보드 [1]가 존재하지 않는다는 오류가 발생합니다 ...
및 다른 질문, 어떻게 구속력에 둘 이상의 클래스를 추가 할 수 있습니까?나는 시도했다 :
...
<td data-bind="attr: { class: Color + ' some-other-class' }"></td>
...
.
그러나 그런 다음 I :
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"
.
그것은 뭔가 잘못하고 있습니다.
해결책
매핑 플러그인은 배열을 ObservableArray 및 속성을 Observable로 전환합니다.
첫 번째 경우에 대해 다음을 수행하여 Observable 배열을 풀어야합니다.
다른 질문에 대해 색상은 관찰 가능합니다.표현식에서 사용하고 값을 가져 오려면 색상 ()을 수행해야합니다.그래서, 그것은 다음과 같습니다 :
<td data-bind="attr: { class: Color() + ' some-other-class' }"></td>
. 제휴하지 않습니다 StackOverflow