【问题标题】:kendo treeview checkbox - parent node check - change event on every checkbox剑道树视图复选框 - 父节点检查 - 每个复选框上的更改事件
【发布时间】:2013-04-12 13:37:45
【问题描述】:

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

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

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

我创建了一个工作示例here

是否有另一个事件可以附加到所有复选框更新后只触发一个事件? 或者也许有一种方法可以将所有这些“更改”事件分组并只触发一个?

【问题讨论】:

    标签: javascript kendo-ui


    【解决方案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 标志。

    【讨论】:

    • 谢谢 - 这行得通,但理想情况下我们应该寻找一个没有超时的解决方案
    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多