我一直在用kogrid编写应用程序,最近我将数据源从一个对象数组更改为一个淘汰对象数组。但是,当我更新对象中的可观察属性时,网格不会更新。
这是我的数据数组:
self.gridData = ko.observableArray([
{ name: ko.observable("joe"), age: ko.observable(5) }
]);
当我更新age属性时,网格上没有任何反应:
self.gridData()[0].age(6);
有没有人对这是为什么有一个很好的答案?
我已经回答了问题below,但有没有人知道为什么kogrid会缓存未包装的值?
答案 0 :(得分:0)
我查看了kogrid来源并在src/classes/row.js
中找到了这一行self.getProperty = function (path) {
return self.propertyCache[path] || (self.propertyCache[path] = window.kg.utils.evalProperty(self.entity, path));
};
看起来属性缓存正在缓存我们在默认cell template中访问的属性的展开值:
<div data-bind="attr: { 'class': 'kgCellText colt' + $index()}, html: $data.getProperty($parent)"></div>
(注意:模板中的$ data是列,其中包含row.getProperty的getProperty包装器)
我只是删除了行缓存属性值,如下所示:
self.getProperty = function (path) {
return window.kg.utils.evalProperty(self.entity, path);
};