《Cesium 进阶知识点》- el-select 列表打开后,点击Cesium.Viewer场景无法自动关闭

前提
  • el-select属性 popper-append-to-body 必须false。这样初始化的列表 el-select-dropdown 才在 el-select下;
  • 目前测试,仅对 Cesium.Viewer 生成的 canvas 点击时列表无法自动关闭;
  • 使用原生 canvasecharts,点击其场景时,列表自动关闭;
解决方案
  1. 代码第 1 行,Cesium.Viewer 初始化完成后,监听 .cesium-widget 的点击事件;

    《Cesium 进阶知识点》- el-select 列表打开后,点击Cesium.Viewer场景无法自动关闭_第1张图片

  2. 代码第 3 - 6 行,获取全部 el-select,循环获取每个 el-select 下的列表 el-select-dropdown

  3. 代码第 9 - 13 行,判断列表 el-select-dropdown 是否显示;

  4. 代码第 10 行,仅在打开状态下,调用 click 事件即可关闭列表;

    document.getElementsByClassName('cesium-widget')[0].onclick = () => {
        // //  el 起作用
        let els = document.querySelectorAll('.el-select');
        els.forEach(el => {
            // 仅对打开的起作用
            let dropdownEls = el.querySelectorAll('.el-select-dropdown');
            for (let i = 0; i < dropdownEls.length; i++) {
                const dEl = dropdownEls[i];
                if(dEl.style.display !== 'none') {
                    el.click();
                    break;
                }
            }
        })
    }
    

你可能感兴趣的:(Cesium,进阶知识点,ElementUI,vue.js,elementui,前端)