我将 KendoUI (v2015.1.318) 与 AngularJS (v1.3.14) 一起使用。每次点击节点后,都会从 API 中获取数据。
选择一些项目并点击“添加”按钮后,项目将被添加到一个单独的列表中,展开的树节点必须保持可见,但所有的
选中的项目必须取消选中。
在我遍历数据源以取消选中选中的项目后,我再次调用了 SetDataSource。当我扩展了很多节点并检查了一些时,UI 在处理过程中会卡住几秒钟。
我想知道是否没有更有效的方法来执行此操作。
我做了一个没有API调用的例子:
$scope.saveTreeFields = function () {
var data = $scope.tree.dataSource._data;
for (var i = 0, j = data.length; i < j; i++) {
checkChildren(data[i]);
}
function checkChildren(data) {
if (data.checked) {
data.checked = false;
}
if (data.items !== undefined) {
for (var i = 0, j = data.items.length; i < j; i++) {
checkChildren(data.items[i]);
}
}
}
$scope.tree.setDataSource(data)
};
Plunker example
最佳答案
收到 Telerik 本身的答复。
you can call the dataItem set("checked", false) method to notify the model of the field change, and the TreeView will update automatically.
代码更改
$scope.saveTreeFields = function () {
var data = $scope.tree.dataSource.data();
for (var i = 0, j = data.length; i < j; i++) {
checkChildren(data[i]);
}
function checkChildren(data) {
if (data.checked) {
data.set("checked", false);
}
if (data.items !== undefined) {
for (var i = 0, j = data.items.length; i < j; i++) {
checkChildren(data.items[i]);
}
}
}
};
关于angularjs - 带有 AngularJS 的 KendoUI Treeview 取消选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29556713/