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、名前、およびステータスである最初のスキーマと同じです。ジョブと電話がレンダリングされません。異なるスキーマをレンダリングする方法は?

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 に答える