我正在使用 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 (anonymous 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 使用 observable 数组没有任何问题。
然而,在我的例子中,可观察数组被下面的代码填充,它会自动为数据上的每个属性创建可观察属性。在此之后,我可以看到排序和过滤器停止工作。
$.each(data.source, function (index, data) {
self.tasks.push(ko.mapping.fromJS({
TaskId: data.TaskId,
Description: data.Description,
RaisedBy: data.RaisedBy,
Status: data.Status
}));
});