0

我需要使用一个网格,其中一列具有基于网格中其他列的值的计算值...

作为示例要求,我有一列显示年龄,这是一个可编辑的列......如果年龄改变,下一列应该计算 100 的值 - 更新的年龄......

我在这里创建了一个 jsfiddle 来演示我的要求JSFiddle

{field: 'computedAge', displayName: '100 -Age',cellTemplate:self.calculatedCellTemplate}

是更新年龄列时我希望填充的计算列

谁能建议我如何做到这一点?

4

1 回答 1

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>';

http://jsfiddle.net/xp6xa/3/

于 2013-03-22T08:33:54.057 回答