2

オブジェクトの2次元配列を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>

これは、(Colorプロパティからのクラスに基づいて)きれいに色付けされたセルを持つ素敵な2次元のhtmlテーブルを生成します。この色を別の色に変更するにはどうすればよいですか?

試しboard[1][1]({Color: 'red'});ましたが、board[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"

それはバグですか、それとも私は何か間違ったことをしていますか?

4

1 に答える 1

3

マッピングプラグインは、配列をobservableArrayに変換し、プロパティをobservableに変換します。

最初のケースでは、次のようにして監視可能な配列をアンラップする必要があります。board.board()[1][1]

他の質問については、色は観察可能です。式で使用していてその値を取得したい場合は、Color()を実行する必要があります。したがって、次のようになります。

<td data-bind="attr: { class: Color() + ' some-other-class' }"></td>
于 2012-02-26T05:05:58.420 に答える