【问题标题】:kogrid not updating column when data changed数据更改时kogrid不更新列
【发布时间】:2016-06-01 09:20:39
【问题描述】:

我有这样的简单数据:

var dataFromAjax = [
     {Id : 1, Name : "Yoza", Status : 1},
     {Id : 2, Name : "Dhika", Status : 1}
];

来自 ajax 的下一个数据将具有不同的架构。像这样:

var nextData = [
    {Id : 1, Name : 'Yoza', Job : 'Programmer', Phone : '08788'},
    {Id : 1, Name : 'Dhika', Job : 'Designer', Phone : '99987922'}
]

在我的一段代码中:

self.Data = ko.observableArray();
self.Data(nextData);
self.Data.valueHasMutated();

问题是列未更新。列仍然与第一个模式相同,即 id、name 和 status。作业和电话未呈现。如何渲染不同的架构?

【问题讨论】:

    标签: knockout.js kogrid


    【解决方案1】:

    您需要将 observableArray columnDefs 传递给您的 koGrid 绑定以使其更改。请参阅他们的文档here

    喜欢:

    HTML 绑定:

    <div data-bind="koGrid: {data: Data, columnDefs: columns}"></div>
    

    视图模型(仅部分):

    self.columns = ko.computed(function(){
        var cols = Object.keys(self.Data()[0]);
        return cols.map(function(col){
            return {
                field: col
            };
        });
    });
    

    您可以定义如何创建columns,只要它返回带有field 对象的对象数组即可。 (有关更多信息,请参阅上面的文档)

    我创建了一个缩小的小提琴here,以根据您的数据提供一些示例。 1秒后数据会发生变化(这只是为了测试)。

    【讨论】:

    • 但它得到了额外的列:'kg_selected' 这是什么?哦,谢谢你的解决方案
    • 哦,是的,再次使用您的解决方案,我如何初始化其他 columnDefs,例如 showGroupPanel 或其他?谢谢
    • 哦 "kg_selected" 是因为我没有设置 displaySelectionCheckbox 为 false (但是我在小提琴中使用的是旧版本的 kogrid,请检查新版本是否仍然出现此问题,是现在很难检查,因为我现在正在使用手机:D),关于 showGroupPanel 或其他配置,您可以直接将它们添加到参数中,例如:&lt;div style="height: 200px;" data-bind="koGrid: {data: Data, columnDefs: columns, displaySelectionCheckbox: false, showGroupPanel: true}"&gt; &lt;/div&gt;。更多配置。 github.com/Knockout-Contrib/KoGrid/wiki/Configuration
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2010-12-05
    相关资源
    最近更新 更多