我正在尝试使用KoGrid更新单个单元格,但是在我通过单击列标题对网格进行排序之前,我没有看到更新。
以下是我正在使用的代码。 JSFiddle可在此处获取:http://jsfiddle.net/b22Ex/2/
不起作用的行是:vm.data()[0] .b(100)。不应该这样,因为值是ko.observable?
var L = [
{a:ko.observable('a1'), b:ko.observable('b1'), c:ko.observable('c1')},
{a:ko.observable('a2'), b:ko.observable('b2'), c:ko.observable('c2')},
{a:ko.observable('a3'), b:ko.observable('b3'), c:ko.observable('c3')}
];
var vm = {
data: ko.observableArray(L)
};
window.vm = vm;
ko.applyBindings(vm);
vm.data()[0].b(100)
console.log("DONE CHANGING VALUE");
顺便说一句,我也遇到了KoGrid how to refresh grid in case data is changed 但我不想更新整个数据集。
答案 0 :(得分:4)
<强>更新强>
试试这个:
JS
var xxx = [
{a:ko.observable('a1'), b:ko.observable('b1'), c:ko.observable('c1')},
{a:ko.observable('a2'), b:ko.observable('b2'), c:ko.observable('c2')},
{a:ko.observable('a3'), b:ko.observable('b3'), c:ko.observable('c3')}
];
var vm = {
data: ko.observableArray(xxx),
};
window.vm = vm;
ko.applyBindings(vm);
vm.data()[0].b(100);
vm.data.valueHasMutated(); //This will update your observable in UI
console.log("DONE CHANGING VALUE");
答案 1 :(得分:1)
以下是您的问题的解决方案。请检查此Fiddle。
var xxx = [
{a:ko.observable('a1'), b:ko.observable('b1'), c:ko.observable('c1')},
{a:ko.observable('a2'), b:ko.observable('b2'), c:ko.observable('c2')},
{a:ko.observable('a3'), b:ko.observable('b3'), c:ko.observable('c3')}
];
var vm = {
data: ko.observableArray(xxx)
};
window.vm = vm;
ko.applyBindings(vm);
vm.data()[0].b(100)
vm.data(vm.data()); //This line will make the fix that you need.
console.log("DONE CHANGING VALUE");