使用AngularJS的KendoUI Treeview取消选中复选框

时间:2015-04-10 08:27:25

标签: angularjs kendo-ui kendo-treeview

我使用KendoUI(v2015.1.318)和AngularJS(v1.3.14)。每次点击节点后,都会从API获取数据。 选择一些项目并单击按钮"添加"后,项目将添加到一个单独的列表中,扩展的treenodes必须保持可见但所有 必须取消选中已检查的项目。

在我遍历数据源以取消选中已检查的项目后,我再次调用了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

1 个答案:

答案 0 :(得分:0)

收到Telerik本人的答复。

  

你可以调用dataItem集(&#34; checked&#34;,false)方法来通知   字段更改的模型,TreeView将自动更新。

代码更改

    $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]);
            }
        }
    }
};