我需要使用一个网格,其中一列具有基于网格中其他列的值的计算值...
作为样本要求,我有一列显示年龄,这是一个可编辑的列...如果更改年龄,下一列应计算值100 - 更新年龄......
我已经创建了一个jsfiddle来演示我的需求JSFiddle
{field: 'computedAge', displayName: '100 -Age',cellTemplate:self.calculatedCellTemplate}
是我希望在更新年龄列时填充的计算列
有谁能建议我如何实现这个目标?
答案 0 :(得分:2)
您只需两步即可实现此目的:
(1)为数据列表中的每个项目创建实例化函数,其中包含computedAge
计算属性。
function Item(data) {
this.name = ko.observable(data.name);
this.age = ko.observable(data.age);
this.computedAge = ko.computed(function(){
return 100 - this.age();
}, this);
}
(2)映射源数组以创建实例而不是简单的observableArray
创建。
self.browsers = ko.observableArray(
ko.utils.arrayMap(
datastore.initialData,
function(data){ return new Item(data); }
)
);
工作示例:http://jsfiddle.net/xp6xa/
<强>更新强>
要获得自我更新的单元格,请不要忘记定义self.calculatedCellTemplate
,如下所示:
self.calculatedCellTemplate = '<span data-bind="text: $parent.entity.computedAge"></span>';