Javascript 在不触发事件的情况下替换剑道的内容
我有一个KendoUI网格,数据在一个可观察的数组中Javascript 在不触发事件的情况下替换剑道的内容,javascript,kendo-ui,kendo-grid,Javascript,Kendo Ui,Kendo Grid,我有一个KendoUI网格,数据在一个可观察的数组中 var aKendoObservableArray = new kendo.data.ObservableArray([ .....]); // defining the grid .... dataSource: { data: aKendoObservableArray, pageSize: 10, schema: {
var aKendoObservableArray = new kendo.data.ObservableArray([ .....]);
// defining the grid ....
dataSource: {
data: aKendoObservableArray,
pageSize: 10,
schema: {
model: {
id: "_jobInstanceId" // the identifier of the model
}
}
},
我想在从服务器获得新数据后替换此阵列的内容。我已经尝试过拼接阵列以清除它并逐个添加新内容。这会导致巨大的性能下降,因为剑道试图在每次添加时确定如何分页网格。有没有办法用只触发一次的更改事件来替换剑道UI ObservableArray的内容?剑道论坛对这个问题有一个答案。我们需要清理数组(触发一个remove事件)并一次推送所有元素(触发一个add事件) 因此,我需要的是
// clean the array
aKendoObservableArray.splice(0, aKendoObservableArray.length);
aKendoObservableArray.push.apply(aKendoObservableArray, [{...},{...},{...},{...},{...}];
最终,我要做的就是删除一个项目:
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);
}
var idToRemove=$(this.parent().attr('data-id');
//删除所有不共享用户试图删除的ID的项目
对于(var i=0;i