私は 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 is not a function (匿名関数) 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
}));
});