【问题标题】:Computed values in knockout koGrid淘汰赛 koGrid 中的计算值
【发布时间】:2013-03-22 16:44:19
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    只需两步即可实现:

    (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/

    【讨论】:

    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多