具有 AngularJS 取消选中复选框的 KendoUI Treeview
KendoUI Treeview with AngularJS uncheck checkboxes
我正在使用 KendoUI (v2015.1.318) 和 AngularJS (v1.3.14)。每次点击一个节点后,数据将从 API 中获取。
选择一些项目并单击按钮 "add" 后,项目将添加到单独的列表中,展开的树节点必须保持可见,但所有
勾选的项目必须取消勾选。
在我遍历数据源以取消选中选中的项目后,我再次调用了 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)
};
收到 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]);
}
}
}
};
我正在使用 KendoUI (v2015.1.318) 和 AngularJS (v1.3.14)。每次点击一个节点后,数据将从 API 中获取。 选择一些项目并单击按钮 "add" 后,项目将添加到单独的列表中,展开的树节点必须保持可见,但所有 勾选的项目必须取消勾选。
在我遍历数据源以取消选中选中的项目后,我再次调用了 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)
};
收到 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]);
}
}
}
};