我有一个带有ObservableArray数据的KendoUI网格。
var aKendoObservableArray = new kendo.data.ObservableArray([ .....]);
// defining the grid ....
dataSource: {
data: aKendoObservableArray,
pageSize: 10,
schema: {
model: {
id: "_jobInstanceId" // the identifier of the model
}
}
},
我想从服务器获取新数据后替换此数组的内容。我已经尝试拼接数组以清除它并逐个添加新内容。这导致了巨大的性能下降,因为剑道试图确定每个添加如何分页网格。有没有一种方法可以替换Kendo UI ObservableArray的内容,只更改事件一次?
答案 0 :(得分:2)
KendoUI论坛回答了这个问题。我们需要清理数组(触发一个remove事件)并立即推送所有元素(触发一个add事件)
http://www.telerik.com/forums/passing-array-to-observablearray-push
因此,我需要的是
// clean the array
aKendoObservableArray.splice(0, aKendoObservableArray.length);
aKendoObservableArray.push.apply(aKendoObservableArray, [{...},{...},{...},{...},{...}];
答案 1 :(得分:0)
最终,这是删除项目所必须做的事情:
var idToRemove = $(this).parent().attr('data-id');
// remove all items that do not share the ID the user is trying to delete
for (var i = 0; i < e.model.MyArrayOfItems.length; i++) {
if (e.model.MyArrayOfItems[i].idToMatch == idToRemove)
e.model.MyArrayOfItems.splice(i, 1);
}