У меня есть Datatable, который принимает данные из массива Knockout ViewModel. Новые строки добавляются отлично, когда я нажимаю новые объекты в массив, но когда объект в этом массиве изменяется, строка не обновляется.Обновление jquery DataTable при изменении нокаута ViewModel
Код relecent ViewModel:
.....
self.Products = ko.observableArray();
.....
Выборочные данные (например результат ko.toJSON (VM.Products())):
"[
{"Price":"114.28","Name":"Pearls","Description":"Little and big","Quantity":3},
{"Price":"117.55","Name":"Silver","Description":"Sliver Coins","Quantity":2},
{"Price":"166.09","Name":"Phone","Description":"Nokia","Quantity":2},
{"Price":"169.36","Name":"Wood","Description":"Northen forest wood","Quantity":1}
]"
Тогда Datatable код:
var CartDt = $("#PurchasedPrdTbl").DataTable({
pageLength: 5,
aoData: ko.toJSON(VM.Products()),
columns: [
{ "title": 'Price' },
{ "title": 'Name' },
{ "title": 'Description' },
{ "title": 'Quantity' },
{
"className": 'remove-details-control',
"orderable": false,
"data": null,
"defaultContent": '',
"title": "Sell Me!",
"fnRender": function (oObj) {
return oObj.aData;
}
}
]
});
I'v попробовал ajax.reload, но это не помогло.
Любые идеи были бы замечательными, спасибо.
EDIT:
Я пытаюсь fnUpdate (source), как это:
CartDt.fnUpdate([{"Price":"114.28","Name":"Pearls","Description":"Little and big","Quantity":3}],1);
Но я получаю это: неперехваченный TypeError: неопределенный не является функция
хорошо вы связывании JSON для данных-таблицы (требуется). Если вы измените их, они не изменятся, потому что нет прав на наблюдаемые. –
@spuer классный, но JSON IS наблюдаемый - self.Products = ko.observableArray(); –
Не в восторге. вам нужно использовать 'arrayMap' или плагин для преобразования данных JSON в наблюдаемые и вставить его в' self.Products'. просто присваивание данных JSON наблюдаемому массиву не означает, что все внутри видимо. –