3

KoGrid で 1 つのセルを更新しようとしていますが、列ヘッダーをクリックしてグリッドを並べ替えるまで更新が行われません。

以下は私が使用しているコードです。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

以下は、問題の解決策です。この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");
于 2013-04-04T04:09:30.473 に答える