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 секунду (это только для тестирования).