Таблица не обновляется с 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);