tree组件的事件有逻辑问题

讨论 未结 7 70
jwj
jwj VIP3 4天前
悬赏:20飞吻
如果在数据源里设置了checked属性为true,则每个数据源都会触发一次“复选框被点击的回调(oncheck)”,而不是用户主动去点击复选框才会触发事件。
我说安全狗怎么老是拦截我,原来是被每个默认勾选都被回调了[泪],导致每次回调都有AJAX请求
回帖
  • jiuxian
    4天前
    而且你设置checked为true的节点会把每个父节点也设置为true,然后再全部触发一次回调,放弃吧,我的结论是layui的tree基本没卵用。[嘻嘻]
    0 回复
  • tree组件目前正在更新中,layui目前还不是稳定版本,请等待版本更新
    0 回复
  • tree模块之后会支持异步更新数据的
    0 回复
  • @jiuxian [汗] 不是吧 这么严重
    0 回复
  • 提供一个临时解决方案,你看
        layui.use(['layer', 'jquery', 'tree'], function () {
    let tree = layui.tree
    ,layer = layui.layer
    ,$ = layui.jquery
    // 默认为false,避免tree初始化时执行N多次回调
    ,checkCallback = false
    ,result = {:json_encode($result)};

    // 一秒钟后,将checkCallback的值设置为true
    layer.load(1, {time: 1000, end: () => checkCallback = true});

    tree.render({
    elem: '#tree'
    ,showCheckbox: true
    ,spread: [0]
    ,onlyIconControl: true
    ,data: result
    ,showLine: false
    ,oncheck: function (obj) {
    // checkCallback为false时不执行你的回调
    if (!checkCallback) return;

    // 你的代码....
    }
    });
    });
    0 回复
  • jiuxian
    14小时前
    @HiTerry 他们已经支持异步更新了,tree的问题不是功能太少,而是功能太多,然而又不实用,大多数时候,我们只需要tree组件的渲染能力,我想大多数工程师更愿意自己实现各种函数功能把默认的功能覆盖掉
    0 回复
  • 米米13
    7小时前
    @jiuxian 怎么解决勾选子节点会默认勾选父节点呢
    0 回复