kendo treeview复选框 - 父节点检查 - 更改每个复选框上的事件

时间:2013-04-12 13:37:46

标签: javascript kendo-ui

我有一个 2级Kendo UI Treeview ,包含父节点和子节点。 当我检查父节点时,将自动检查所有子节点(包括父节点)。

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

treeView.data("kendoTreeView").dataSource.bind("change", function() {
    alert('event fired!');
});

我创建了一个工作示例here

是否还有另一个要附加的事件,以便在更新所有复选框后仅触发一个事件? 或者也许有一种方法可以将所有这些“变化”事件分组,而只是激活一个?

1 个答案:

答案 0 :(得分:1)

我已经用这个解决方案结束了:

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 函数也会清除 timeoutSet 标志。