From 568829afca7f66e43a3425e729a4601eca3db919 Mon Sep 17 00:00:00 2001 From: DCloud_LXH <283700113@qq.com> Date: Wed, 7 Sep 2022 11:12:37 +0800 Subject: [PATCH] fix(mp): wxs processEventArgs fixed #3829 --- src/core/runtime/wrapper/util.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/core/runtime/wrapper/util.js b/src/core/runtime/wrapper/util.js index 4ffa28caa..90539b4ee 100644 --- a/src/core/runtime/wrapper/util.js +++ b/src/core/runtime/wrapper/util.js @@ -142,7 +142,7 @@ export function initData (vueOptions, context) { try { // 对 data 格式化 data = JSON.parse(JSON.stringify(data)) - } catch (e) {} + } catch (e) { } } if (!isPlainObject(data)) { @@ -332,7 +332,7 @@ function wrapper (event) { // TODO 又得兼容 mpvue 的 mp 对象 try { event.mp = JSON.parse(JSON.stringify(event)) - } catch (e) {} + } catch (e) { } event.stopPropagation = noop event.preventDefault = noop @@ -413,9 +413,11 @@ function getExtraValue (vm, dataPathsArray) { return context } -function processEventExtra (vm, extra, event) { +function processEventExtra (vm, extra, event, __args__) { const extraObj = {} + __args__ = event.detail.__args__ || __args__ + if (Array.isArray(extra) && extra.length) { /** *[ @@ -436,8 +438,8 @@ function processEventExtra (vm, extra, event) { if (dataPath === '$event') { // $event extraObj['$' + index] = event } else if (dataPath === 'arguments') { - if (event.detail && event.detail.__args__) { - extraObj['$' + index] = event.detail.__args__ + if (event.detail && __args__) { + extraObj['$' + index] = __args__ } else { extraObj['$' + index] = [event] } @@ -467,6 +469,10 @@ function getObjByArray (arr) { function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) { let isCustomMPEvent = false // wxcomponent 组件,传递原始 event 对象 + + // fixed 用户直接触发 mpInstance.triggerEvent + const __args__ = event.detail.__args__ || [event.detail] + if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && event.currentTarget.dataset && @@ -475,11 +481,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam if (isCustomMPEvent) { return [event] } - return event.detail.__args__ || event.detail + return __args__ } } - const extraObj = processEventExtra(vm, extra, event) + const extraObj = processEventExtra(vm, extra, event, __args__) const ret = [] args.forEach(arg => { @@ -488,7 +494,7 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam ret.push(event.target.value) } else { if (isCustom && !isCustomMPEvent) { - ret.push(event.detail.__args__[0]) + ret.push(__args__[0]) } else { // wxcomponent 组件或内置组件 ret.push(event) } -- GitLab