KoGrid更新单元格
我想用KoGrid更新单个单元格,但直到我通过单击列标题对网格进行排序后,才看到更新发生。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 但我不想更新整个数据集。
更新
试试这个:
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");
谢谢,我只是试过这个,它的工作原理。是否有一个特殊的原因,我必须调用valueHasMutated()? – krasnaya 2013-04-04 14:29:13
下面是解决你的问题。检查这个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");
不用重新初始化observableArray,你可以使用'valueHasMutated'属性,它会自动将更改传播到UI,检查我更新的答案 – gaurav 2013-04-04 04:25:13
您是否尝试过将更新作为一个按钮的功能? – segFault 2013-04-04 03:13:51