首页 > 解决方案 > 即使在被删除后,Kendo 树视图也会在列表框中选择项目的副本

问题描述

嘿,我在这里需要帮助。我已经在这工作了几个小时了,我只是找不到这段代码是如何恢复旧值的。

const onCheck = (e) => {
    let listBox = $("#Sources").data("kendoListBox"),
        treeView = $("#availableSources").data("kendoTreeView"),
        selection = [],
        getSelection = (items) => {
            items.forEach(item => {
                if (item.hasChildren) {
                    getSelection(item.items);
                } else if (item.checked) {
                    selection.push(item);
                }
            });
        };

    if (e.node.attributes[3].value == "false") {
        listBox.remove(listBox.items());
        $("#Sources option[value='" + listBox.dataSource._data[0].value + "']").remove();
        //selection.pop(listBox.dataSource._data[0]);
    } else {
        getSelection(treeView.dataSource.data());

        if (selection.length) {
            selection.forEach(item => {
                listBox.add({
                    text: item.text,
                    value: item.id
                });
            });
        }
    }
}

例如,我检查了Github项目并将其放入列表框中就好了。它还将项目的 ID 添加到隐藏的选择组件中。

在此处输入图像描述

在此处输入图像描述

现在说我现在取消选中该项目:

在此处输入图像描述

在此处输入图像描述

伟大的!它从列表框和隐藏的选择组件中删除了该项目。但是,当我选择另一个项目时,比如GitHubIssues ,我不仅会在列表框中看到该项目,而且将前一个项目放入选择组件中。

在此处输入图像描述

在此处输入图像描述

它在列表框中有正确的项目,但我不确定为什么它保留以前的值?

标签: javascriptjquerykendo-uikendo-treeview

解决方案


推荐阅读