0

我有这样的简单数据:

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。作业和电话未呈现。如何呈现不同的架构?

4

1 回答 1

0

您需要将 observableArray columnDefs 传递给您的 koGrid 绑定以使其更改。在此处查看他们的文档。

喜欢:

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。(有关更多信息,请参阅上面的文档)

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

于 2016-02-19T18:44:44.327 回答