0

テーブルバインディングへの単純な2次元配列でノックアウトJを使用しています。テーブルは正常にレンダリングされ、クリック関数は正常に起動され、rightindex も更新されています。しかし、UI は更新されません。

これは私のコードです:

HTML:

<table>
    <tbody data-bind="foreach: representation ">
        <tr data-bind="foreach: $data, click: $parent.clickMe">
            <td data-bind="text: $data ">
            </td>
        </tr>
    </tbody>
</table>

JS:

$(function () {


    var ViewModel = function () {
        var self = this;
        self.clickMe = function (data, event) {
            var target;
            if (event.target) target = event.target;
            else if (event.srcElement) target = event.srcElement;

            if (target.nodeType == 3) // defeat Safari bug
                target = target.parentNode;

            self.representation()[target.parentElement.rowIndex][target.cellIndex] = 1;
        };

        self.representation = ko.observableArray([
                    [0, 0, 0],
                    [0, 0, 0],
                    [0, 0, 0]
                ]);
    };
    ko.applyBindings(new ViewModel());
});

ここで何が欠けていますか?

4

1 に答える 1

1

各表現の個々の値で UI を更新する場合は、それらもオブザーバブルにする必要があると思います。

 self.representation = ko.observableArray([
     [ko.observable(0), ko.observable(0), ko.observable(0)],
     [ko.observable(0), ko.observable(0), ko.observable(0)],
     [ko.observable(0), ko.observable(0), ko.observable(0)]
 ]);

そして、次を使用してそれらを更新します。

self.representation()[target.parentElement.rowIndex][target.cellIndex](1);
于 2013-04-08T20:22:50.300 に答える