您只需两个步骤即可实现此目的:
(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>';
http://jsfiddle.net/xp6xa/3/