【发布时间】:2014-08-14 09:49:40
【问题描述】:
我正在使用 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 使用 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
}));
});
【问题讨论】:
-
我看不出你所拥有的有什么问题。您可以发布您的视图模型和示例数据或在 jsfiddle 上复制问题吗?
-
感谢您的回复。我已经用更多信息更新了原始问题。
-
你的 jsfiddle 在这里可以正常工作!
标签: knockout.js kendo-ui kendo-grid knockout-kendo