Javascript 剑道树视图复选框-父节点检查-更改每个复选框上的事件

Javascript 剑道树视图复选框-父节点检查-更改每个复选框上的事件,javascript,kendo-ui,Javascript,Kendo Ui,我有一个带有父节点和子节点的2级剑道UI树视图。 检查父节点时,将自动检查所有子节点(包括父节点) 现在我想发送一个具有当前树选择状态的事件。 问题是当我尝试在dataSource.change方法中执行此操作时,因为它会分别在每个复选框选择上激发(1个父节点+3个子节点=4个更改事件)。这是代码的样子: treeView.data("kendoTreeView").dataSource.bind("change", function() { alert('event fired!');

我有一个带有父节点和子节点的2级剑道UI树视图。 检查父节点时,将自动检查所有子节点(包括父节点)

现在我想发送一个具有当前树选择状态的事件。 问题是当我尝试在dataSource.change方法中执行此操作时,因为它会分别在每个复选框选择上激发(1个父节点+3个子节点=4个更改事件)。这是代码的样子:

treeView.data("kendoTreeView").dataSource.bind("change", function() {
    alert('event fired!');
});
我已经创建了一个工作示例

是否存在要附加到的另一个事件,以便在更新所有复选框后仅触发一个事件?
或者有一种方法可以将所有这些“更改”事件分组,只触发一个事件?

我以以下解决方案结束:

tree.data("kendoTreeView").dataSource.bind("change", function() {
        treeView = tree.data("kendoTreeView");
        checkedNodes = [];
    checkedNodeIds(treeView.dataSource.view(), checkedNodes);
    if (!timeoutSet) {
        setTimeout(fireCheckboxChangeOnce, 50);//fires only one event when parent checkbox checks all the children
        timeoutSet = true;
    }
});
只有第一个事件创建对函数的延迟调用(使用setTimeout()。 所有剩余的“更改”事件仅修改checkedNodes参数


fireCheckboxChangeOnce函数也会清除时间开始标志。

我以以下解决方案结束:

tree.data("kendoTreeView").dataSource.bind("change", function() {
        treeView = tree.data("kendoTreeView");
        checkedNodes = [];
    checkedNodeIds(treeView.dataSource.view(), checkedNodes);
    if (!timeoutSet) {
        setTimeout(fireCheckboxChangeOnce, 50);//fires only one event when parent checkbox checks all the children
        timeoutSet = true;
    }
});
只有第一个事件创建对函数的延迟调用(使用setTimeout()。 所有剩余的“更改”事件仅修改checkedNodes参数


fireCheckboxChangeOnce函数也会清除TimeStart标志。

谢谢-这是可行的,但理想情况下我们应该寻找一个没有超时的解决方案-这是可行的,但理想情况下我们应该寻找一个没有超时的解决方案