3

我正在尝试使用 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 如何在数据更改 但我不想更新整个数据集的情况下刷新网格。

4

2 回答 2

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");
于 2013-04-04T03:13:35.150 回答
1

以下是您的问题的解决方案。检查这个小提琴

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");
于 2013-04-04T04:09:30.473 回答