Я использую Knockout-Kendo.js, и у меня не было проблем с привязкой данных к сетке и просмотром изменений при изменении наблюдаемого массива.
тем не мение
- Сортировка не работает и ошибок js нет.
Обратите внимание, что tasks является ko.observableArray()
<div data-bind="kendoGrid: {
data: tasks,
columns: [
{ field: 'TaskId', title: 'Task Id' },
{ field: 'Description', title: 'Description' },
{ field: 'RaisedBy', title: 'Requested User' },
{ field: 'Status', title: 'Status' },
{ field: '', title: '' }
],
rowTemplate: 'Template',
useKOTemplates: true,
editable: false,
filterable: true,
sortable: true,
scrollable: false,
pageable: {pageSize: 5 }
}">
</div>
<script id="Template" type="text/html">
<tr>
<td><div data-bind="text: TaskId"></div></td>
<td><div data-bind="text: Description"></div></td>
<td><div data-bind="text: RaisedBy"></div></td>
<td><div data-bind="text: Status"></div></td>
<td><button data-bind="click: $root.viewDetails">View</button></td>
</tr>
</script>
- Фильтрация тоже не работает, и это то, что я вижу в консоли.
Uncaught TypeError: undefined не является функцией (анонимная функция) VM3445:3 o.filter kendo.web.min.js:11 o.process kendo.web.min.js:11 ct.extend.query kendo.web.min. js:11 ct.extend._query kendo.web.min.js:11 ct.extend.filter kendo.web.min.js:11 g.extend.filter kendo.web.min.js:19 g.extend._submit kendo.web.min.js:19 b.extend.proxy.b.isFunction.i jquery-1.9.1.js:7223 b.event.dispatch jquery-1.9.1.js:9593
JSfiddle — http://jsfiddle.net/fc0ukq9o/
Я обнаружил, что JSFiddle работает без проблем с наблюдаемым массивом.
Однако в моем случае наблюдаемый массив заполнялся приведенным ниже кодом, который автоматически создает наблюдаемые свойства для каждого из свойств данных. После этого я вижу, что сортировка и фильтр перестают работать.
$.each(data.source, function (index, data) {
self.tasks.push(ko.mapping.fromJS({
TaskId: data.TaskId,
Description: data.Description,
RaisedBy: data.RaisedBy,
Status: data.Status
}));
});