From a898220c55f64edb6c185f780749d5f29f559c76 Mon Sep 17 00:00:00 2001 From: wangwenrui Date: Wed, 20 Jan 2021 17:43:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:v-clickoutsize=E6=8C=87=E4=BB=A4=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=97=A7=E7=9A=84=E8=B0=83=E7=94=A8=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/common/js/tools.js | 44 ++++++++++++------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/nezha-fronted/src/components/common/js/tools.js b/nezha-fronted/src/components/common/js/tools.js index fffca3ccd..24d6e842e 100644 --- a/nezha-fronted/src/components/common/js/tools.js +++ b/nezha-fronted/src/components/common/js/tools.js @@ -7,8 +7,13 @@ const exceptClassName = ["config-dropdown", "nz-pop", "el-picker", "chart-box-dr export const clickoutside = { // 初始化指令 bind(el, binding, vnode) { - if(!binding.value||!binding.value.obj) return; - let oldValue = JSON.parse(JSON.stringify(binding.value.obj)); + if(!binding.expression) return; + let oldValue; + try{ + oldValue= JSON.parse(JSON.stringify(binding.value.obj)); + }catch (e) { + + } function documentHandler(e) { if (el.contains(e.target)) { return false; @@ -26,20 +31,29 @@ export const clickoutside = { if (!flag) { return false; } - - let newValue = JSON.parse(JSON.stringify(binding.value.obj)); - if(!isEqual(oldValue,newValue)){ - MessageBox.confirm(i18n.t("tip.confirmCancel"), { - confirmButtonText: i18n.t("tip.yes"), - cancelButtonText: i18n.t("tip.no"), - type: 'warning' - }).then(() => { - if(binding.value.func){ - binding.value.func(); - } - }) + if(oldValue){ + let newValue = JSON.parse(JSON.stringify(binding.value.obj)); + if(!isEqual(oldValue,newValue)){ + MessageBox.confirm(i18n.t("tip.confirmCancel"), { + confirmButtonText: i18n.t("tip.yes"), + cancelButtonText: i18n.t("tip.no"), + type: 'warning' + }).then(() => { + if(binding.value.func){ + binding.value.func(); + } + }) + }else{ + binding.value.func(); + } }else{ - binding.value.func(); + if (binding.arg) { + binding.value(e, binding.arg); + } else { + if(binding.value){ + binding.value(e); + } + } } } }