Таблица не обновляется с knockoutjs

Я использую knockoutJs с простым 2d массивом для привязки к таблице. Таблица отображается нормально, функция щелчка запускается нормально, и даже правый индекс обновляется. но пользовательский интерфейс не получает refresehd.

Это мой код:

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());
});

Что мне здесь не хватает?

1 ответ

Решение

Если вы хотите, чтобы отдельные значения в каждом представлении обновляли пользовательский интерфейс, то вам также нужно сделать их наблюдаемыми, я думаю:

 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);
Другие вопросы по тегам