kogrid не обновляет столбец при изменении данных

У меня есть простые данные, как это:

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, имя и статус. Работа и телефон не предоставляются. как сделать разные схемы?

1 ответ

Решение

Вам нужно передать observableArray columnDefs в вашу привязку koGrid, чтобы она изменилась. Смотрите их документы здесь.

Подобно:

HTML привязка:

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

Viewmodel (только часть):

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

Вы можете определить, как вы создаете columns до тех пор, пока он возвращает массив объектов с field объект. (См. Документы выше для получения дополнительной информации)

Я создал минимизированную скрипку, чтобы привести пример на основе ваших данных. Данные изменятся через 1 секунду (это только для тестирования).

Другие вопросы по тегам