KoGrid更新单元格

时间:2013-04-03 21:54:26

标签: javascript knockout.js 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 但我不想更新整个数据集。

2 个答案:

答案 0 :(得分:4)

<强>更新

试试这个:

Working Fiddle

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");