From d7ba85d9bddc2d6309cbe1271fe30e8cf62ef5bd Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Sat, 3 Aug 2019 16:16:50 +0800 Subject: [PATCH] fix(mp): input returnValue --- packages/uni-app-plus/dist/index.js | 67 +++++++++++++---------- packages/uni-mp-alipay/dist/index.js | 67 +++++++++++++---------- packages/uni-mp-baidu/dist/index.js | 79 +++++++++++++++------------ packages/uni-mp-qq/dist/index.js | 67 +++++++++++++---------- packages/uni-mp-toutiao/dist/index.js | 67 +++++++++++++---------- packages/uni-mp-weixin/dist/index.js | 67 +++++++++++++---------- src/core/runtime/base.js | 2 +- src/core/runtime/wrapper/util.js | 79 +++++++++++++++------------ 8 files changed, 272 insertions(+), 223 deletions(-) diff --git a/packages/uni-app-plus/dist/index.js b/packages/uni-app-plus/dist/index.js index 405d8be31..4f4db7ffd 100644 --- a/packages/uni-app-plus/dist/index.js +++ b/packages/uni-app-plus/dist/index.js @@ -651,8 +651,8 @@ function hasHook (hook, vueOptions) { return true } if (vueOptions.super && - vueOptions.super.options && - Array.isArray(vueOptions.super.options[hook])) { + vueOptions.super.options && + Array.isArray(vueOptions.super.options[hook])) { return true } return false @@ -934,16 +934,16 @@ function processEventExtra (vm, extra, event) { if (Array.isArray(extra) && extra.length) { /** - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *'test' - */ + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *'test' + */ extra.forEach((dataPath, index) => { if (typeof dataPath === 'string') { if (!dataPath) { // model,prop.sync @@ -979,8 +979,8 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象 if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && - event.currentTarget.dataset && - event.currentTarget.dataset.comType === 'wx'; + event.currentTarget.dataset && + event.currentTarget.dataset.comType === 'wx'; if (!args.length) { // 无参数,直接传入 event 或 detail 数组 if (isCustomMPEvent) { return [event] @@ -1022,30 +1022,33 @@ const CUSTOM = '^'; function isMatchEventType (eventType, optType) { return (eventType === optType) || - ( - optType === 'regionchange' && - ( - eventType === 'begin' || - eventType === 'end' - ) - ) + ( + optType === 'regionchange' && + ( + eventType === 'begin' || + eventType === 'end' + ) + ) } function handleEvent (event) { event = wrapper$2(event); - // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] - const dataset = (event.currentTarget || event.target).dataset; - if (!dataset) { - return console.warn(`事件信息不存在`) + // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] + const dataset = (event.currentTarget || event.target).dataset; + if (!dataset) { + return console.warn(`事件信息不存在`) } - const eventOpts = dataset.eventOpts || dataset['event-opts'];// 支付宝 web-view 组件 dataset 非驼峰 + const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰 if (!eventOpts) { return console.warn(`事件信息不存在`) } // [['handle',[1,2,a]],['handle1',[1,2,a]]] const eventType = event.type; + + const ret = []; + eventOpts.forEach(eventOpt => { let type = eventOpt[0]; const eventsArray = eventOpt[1]; @@ -1062,8 +1065,8 @@ function handleEvent (event) { let handlerCtx = this.$vm; if ( handlerCtx.$options.generic && - handlerCtx.$parent && - handlerCtx.$parent.$parent + handlerCtx.$parent && + handlerCtx.$parent.$parent ) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots handlerCtx = handlerCtx.$parent.$parent; } @@ -1077,18 +1080,22 @@ function handleEvent (event) { } handler.once = true; } - handler.apply(handlerCtx, processEventArgs( + ret.push(handler.apply(handlerCtx, processEventArgs( this.$vm, event, eventArray[1], eventArray[2], isCustom, methodName - )); + ))); } }); } }); + + if (ret.length === 1) { + return ret[0] + } } const hooks = [ diff --git a/packages/uni-mp-alipay/dist/index.js b/packages/uni-mp-alipay/dist/index.js index 775e2d9c9..72c2e892e 100644 --- a/packages/uni-mp-alipay/dist/index.js +++ b/packages/uni-mp-alipay/dist/index.js @@ -1026,8 +1026,8 @@ function hasHook (hook, vueOptions) { return true } if (vueOptions.super && - vueOptions.super.options && - Array.isArray(vueOptions.super.options[hook])) { + vueOptions.super.options && + Array.isArray(vueOptions.super.options[hook])) { return true } return false @@ -1299,16 +1299,16 @@ function processEventExtra (vm, extra, event) { if (Array.isArray(extra) && extra.length) { /** - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *'test' - */ + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *'test' + */ extra.forEach((dataPath, index) => { if (typeof dataPath === 'string') { if (!dataPath) { // model,prop.sync @@ -1344,8 +1344,8 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象 if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && - event.currentTarget.dataset && - event.currentTarget.dataset.comType === 'wx'; + event.currentTarget.dataset && + event.currentTarget.dataset.comType === 'wx'; if (!args.length) { // 无参数,直接传入 event 或 detail 数组 if (isCustomMPEvent) { return [event] @@ -1387,30 +1387,33 @@ const CUSTOM = '^'; function isMatchEventType (eventType, optType) { return (eventType === optType) || - ( - optType === 'regionchange' && - ( - eventType === 'begin' || - eventType === 'end' - ) - ) + ( + optType === 'regionchange' && + ( + eventType === 'begin' || + eventType === 'end' + ) + ) } function handleEvent (event) { event = wrapper$1(event); - // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] - const dataset = (event.currentTarget || event.target).dataset; - if (!dataset) { - return console.warn(`事件信息不存在`) + // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] + const dataset = (event.currentTarget || event.target).dataset; + if (!dataset) { + return console.warn(`事件信息不存在`) } - const eventOpts = dataset.eventOpts || dataset['event-opts'];// 支付宝 web-view 组件 dataset 非驼峰 + const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰 if (!eventOpts) { return console.warn(`事件信息不存在`) } // [['handle',[1,2,a]],['handle1',[1,2,a]]] const eventType = event.type; + + const ret = []; + eventOpts.forEach(eventOpt => { let type = eventOpt[0]; const eventsArray = eventOpt[1]; @@ -1427,8 +1430,8 @@ function handleEvent (event) { let handlerCtx = this.$vm; if ( handlerCtx.$options.generic && - handlerCtx.$parent && - handlerCtx.$parent.$parent + handlerCtx.$parent && + handlerCtx.$parent.$parent ) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots handlerCtx = handlerCtx.$parent.$parent; } @@ -1442,18 +1445,22 @@ function handleEvent (event) { } handler.once = true; } - handler.apply(handlerCtx, processEventArgs( + ret.push(handler.apply(handlerCtx, processEventArgs( this.$vm, event, eventArray[1], eventArray[2], isCustom, methodName - )); + ))); } }); } }); + + if (ret.length === 1) { + return ret[0] + } } const hooks = [ diff --git a/packages/uni-mp-baidu/dist/index.js b/packages/uni-mp-baidu/dist/index.js index c33bf82e9..1a433e552 100644 --- a/packages/uni-mp-baidu/dist/index.js +++ b/packages/uni-mp-baidu/dist/index.js @@ -756,8 +756,8 @@ function hasHook (hook, vueOptions) { return true } if (vueOptions.super && - vueOptions.super.options && - Array.isArray(vueOptions.super.options[hook])) { + vueOptions.super.options && + Array.isArray(vueOptions.super.options[hook])) { return true } return false @@ -919,10 +919,10 @@ function parsePropType (key, type, defaultValue, file) { { if ( defaultValue === false && - Array.isArray(type) && - type.length === 2 && - type.indexOf(String) !== -1 && - type.indexOf(Boolean) !== -1 + Array.isArray(type) && + type.length === 2 && + type.indexOf(String) !== -1 && + type.indexOf(Boolean) !== -1 ) { // [String,Boolean]=>Boolean if (file) { console.warn( @@ -1009,8 +1009,8 @@ function wrapper$1 (event) { { // mp-baidu,checked=>value if ( isPlainObject(event.detail) && - hasOwn(event.detail, 'checked') && - !hasOwn(event.detail, 'value') + hasOwn(event.detail, 'checked') && + !hasOwn(event.detail, 'value') ) { event.detail.value = event.detail.checked; } @@ -1065,16 +1065,16 @@ function processEventExtra (vm, extra, event) { if (Array.isArray(extra) && extra.length) { /** - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *'test' - */ + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *'test' + */ extra.forEach((dataPath, index) => { if (typeof dataPath === 'string') { if (!dataPath) { // model,prop.sync @@ -1110,8 +1110,8 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象 if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && - event.currentTarget.dataset && - event.currentTarget.dataset.comType === 'wx'; + event.currentTarget.dataset && + event.currentTarget.dataset.comType === 'wx'; if (!args.length) { // 无参数,直接传入 event 或 detail 数组 if (isCustomMPEvent) { return [event] @@ -1153,30 +1153,33 @@ const CUSTOM = '^'; function isMatchEventType (eventType, optType) { return (eventType === optType) || - ( - optType === 'regionchange' && - ( - eventType === 'begin' || - eventType === 'end' - ) - ) + ( + optType === 'regionchange' && + ( + eventType === 'begin' || + eventType === 'end' + ) + ) } function handleEvent (event) { event = wrapper$1(event); - // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] - const dataset = (event.currentTarget || event.target).dataset; - if (!dataset) { - return console.warn(`事件信息不存在`) + // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] + const dataset = (event.currentTarget || event.target).dataset; + if (!dataset) { + return console.warn(`事件信息不存在`) } - const eventOpts = dataset.eventOpts || dataset['event-opts'];// 支付宝 web-view 组件 dataset 非驼峰 + const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰 if (!eventOpts) { return console.warn(`事件信息不存在`) } // [['handle',[1,2,a]],['handle1',[1,2,a]]] const eventType = event.type; + + const ret = []; + eventOpts.forEach(eventOpt => { let type = eventOpt[0]; const eventsArray = eventOpt[1]; @@ -1193,8 +1196,8 @@ function handleEvent (event) { let handlerCtx = this.$vm; if ( handlerCtx.$options.generic && - handlerCtx.$parent && - handlerCtx.$parent.$parent + handlerCtx.$parent && + handlerCtx.$parent.$parent ) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots handlerCtx = handlerCtx.$parent.$parent; } @@ -1208,18 +1211,22 @@ function handleEvent (event) { } handler.once = true; } - handler.apply(handlerCtx, processEventArgs( + ret.push(handler.apply(handlerCtx, processEventArgs( this.$vm, event, eventArray[1], eventArray[2], isCustom, methodName - )); + ))); } }); } }); + + if (ret.length === 1) { + return ret[0] + } } const hooks = [ diff --git a/packages/uni-mp-qq/dist/index.js b/packages/uni-mp-qq/dist/index.js index 37a2664f2..569c26847 100644 --- a/packages/uni-mp-qq/dist/index.js +++ b/packages/uni-mp-qq/dist/index.js @@ -715,8 +715,8 @@ function hasHook (hook, vueOptions) { return true } if (vueOptions.super && - vueOptions.super.options && - Array.isArray(vueOptions.super.options[hook])) { + vueOptions.super.options && + Array.isArray(vueOptions.super.options[hook])) { return true } return false @@ -998,16 +998,16 @@ function processEventExtra (vm, extra, event) { if (Array.isArray(extra) && extra.length) { /** - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *'test' - */ + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *'test' + */ extra.forEach((dataPath, index) => { if (typeof dataPath === 'string') { if (!dataPath) { // model,prop.sync @@ -1043,8 +1043,8 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象 if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && - event.currentTarget.dataset && - event.currentTarget.dataset.comType === 'wx'; + event.currentTarget.dataset && + event.currentTarget.dataset.comType === 'wx'; if (!args.length) { // 无参数,直接传入 event 或 detail 数组 if (isCustomMPEvent) { return [event] @@ -1086,30 +1086,33 @@ const CUSTOM = '^'; function isMatchEventType (eventType, optType) { return (eventType === optType) || - ( - optType === 'regionchange' && - ( - eventType === 'begin' || - eventType === 'end' - ) - ) + ( + optType === 'regionchange' && + ( + eventType === 'begin' || + eventType === 'end' + ) + ) } function handleEvent (event) { event = wrapper$1(event); - // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] - const dataset = (event.currentTarget || event.target).dataset; - if (!dataset) { - return console.warn(`事件信息不存在`) + // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] + const dataset = (event.currentTarget || event.target).dataset; + if (!dataset) { + return console.warn(`事件信息不存在`) } - const eventOpts = dataset.eventOpts || dataset['event-opts'];// 支付宝 web-view 组件 dataset 非驼峰 + const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰 if (!eventOpts) { return console.warn(`事件信息不存在`) } // [['handle',[1,2,a]],['handle1',[1,2,a]]] const eventType = event.type; + + const ret = []; + eventOpts.forEach(eventOpt => { let type = eventOpt[0]; const eventsArray = eventOpt[1]; @@ -1126,8 +1129,8 @@ function handleEvent (event) { let handlerCtx = this.$vm; if ( handlerCtx.$options.generic && - handlerCtx.$parent && - handlerCtx.$parent.$parent + handlerCtx.$parent && + handlerCtx.$parent.$parent ) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots handlerCtx = handlerCtx.$parent.$parent; } @@ -1141,18 +1144,22 @@ function handleEvent (event) { } handler.once = true; } - handler.apply(handlerCtx, processEventArgs( + ret.push(handler.apply(handlerCtx, processEventArgs( this.$vm, event, eventArray[1], eventArray[2], isCustom, methodName - )); + ))); } }); } }); + + if (ret.length === 1) { + return ret[0] + } } const hooks = [ diff --git a/packages/uni-mp-toutiao/dist/index.js b/packages/uni-mp-toutiao/dist/index.js index def1fd499..a0e265aa1 100644 --- a/packages/uni-mp-toutiao/dist/index.js +++ b/packages/uni-mp-toutiao/dist/index.js @@ -796,8 +796,8 @@ function hasHook (hook, vueOptions) { return true } if (vueOptions.super && - vueOptions.super.options && - Array.isArray(vueOptions.super.options[hook])) { + vueOptions.super.options && + Array.isArray(vueOptions.super.options[hook])) { return true } return false @@ -1079,16 +1079,16 @@ function processEventExtra (vm, extra, event) { if (Array.isArray(extra) && extra.length) { /** - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *'test' - */ + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *'test' + */ extra.forEach((dataPath, index) => { if (typeof dataPath === 'string') { if (!dataPath) { // model,prop.sync @@ -1124,8 +1124,8 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象 if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && - event.currentTarget.dataset && - event.currentTarget.dataset.comType === 'wx'; + event.currentTarget.dataset && + event.currentTarget.dataset.comType === 'wx'; if (!args.length) { // 无参数,直接传入 event 或 detail 数组 if (isCustomMPEvent) { return [event] @@ -1167,30 +1167,33 @@ const CUSTOM = '^'; function isMatchEventType (eventType, optType) { return (eventType === optType) || - ( - optType === 'regionchange' && - ( - eventType === 'begin' || - eventType === 'end' - ) - ) + ( + optType === 'regionchange' && + ( + eventType === 'begin' || + eventType === 'end' + ) + ) } function handleEvent (event) { event = wrapper$1(event); - // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] - const dataset = (event.currentTarget || event.target).dataset; - if (!dataset) { - return console.warn(`事件信息不存在`) + // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] + const dataset = (event.currentTarget || event.target).dataset; + if (!dataset) { + return console.warn(`事件信息不存在`) } - const eventOpts = dataset.eventOpts || dataset['event-opts'];// 支付宝 web-view 组件 dataset 非驼峰 + const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰 if (!eventOpts) { return console.warn(`事件信息不存在`) } // [['handle',[1,2,a]],['handle1',[1,2,a]]] const eventType = event.type; + + const ret = []; + eventOpts.forEach(eventOpt => { let type = eventOpt[0]; const eventsArray = eventOpt[1]; @@ -1207,8 +1210,8 @@ function handleEvent (event) { let handlerCtx = this.$vm; if ( handlerCtx.$options.generic && - handlerCtx.$parent && - handlerCtx.$parent.$parent + handlerCtx.$parent && + handlerCtx.$parent.$parent ) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots handlerCtx = handlerCtx.$parent.$parent; } @@ -1222,18 +1225,22 @@ function handleEvent (event) { } handler.once = true; } - handler.apply(handlerCtx, processEventArgs( + ret.push(handler.apply(handlerCtx, processEventArgs( this.$vm, event, eventArray[1], eventArray[2], isCustom, methodName - )); + ))); } }); } }); + + if (ret.length === 1) { + return ret[0] + } } const hooks = [ diff --git a/packages/uni-mp-weixin/dist/index.js b/packages/uni-mp-weixin/dist/index.js index f09cfd156..7ef2aea18 100644 --- a/packages/uni-mp-weixin/dist/index.js +++ b/packages/uni-mp-weixin/dist/index.js @@ -653,8 +653,8 @@ function hasHook (hook, vueOptions) { return true } if (vueOptions.super && - vueOptions.super.options && - Array.isArray(vueOptions.super.options[hook])) { + vueOptions.super.options && + Array.isArray(vueOptions.super.options[hook])) { return true } return false @@ -936,16 +936,16 @@ function processEventExtra (vm, extra, event) { if (Array.isArray(extra) && extra.length) { /** - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *'test' - */ + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *'test' + */ extra.forEach((dataPath, index) => { if (typeof dataPath === 'string') { if (!dataPath) { // model,prop.sync @@ -981,8 +981,8 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象 if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && - event.currentTarget.dataset && - event.currentTarget.dataset.comType === 'wx'; + event.currentTarget.dataset && + event.currentTarget.dataset.comType === 'wx'; if (!args.length) { // 无参数,直接传入 event 或 detail 数组 if (isCustomMPEvent) { return [event] @@ -1024,30 +1024,33 @@ const CUSTOM = '^'; function isMatchEventType (eventType, optType) { return (eventType === optType) || - ( - optType === 'regionchange' && - ( - eventType === 'begin' || - eventType === 'end' - ) - ) + ( + optType === 'regionchange' && + ( + eventType === 'begin' || + eventType === 'end' + ) + ) } function handleEvent (event) { event = wrapper$1(event); - // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] - const dataset = (event.currentTarget || event.target).dataset; - if (!dataset) { - return console.warn(`事件信息不存在`) + // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] + const dataset = (event.currentTarget || event.target).dataset; + if (!dataset) { + return console.warn(`事件信息不存在`) } - const eventOpts = dataset.eventOpts || dataset['event-opts'];// 支付宝 web-view 组件 dataset 非驼峰 + const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰 if (!eventOpts) { return console.warn(`事件信息不存在`) } // [['handle',[1,2,a]],['handle1',[1,2,a]]] const eventType = event.type; + + const ret = []; + eventOpts.forEach(eventOpt => { let type = eventOpt[0]; const eventsArray = eventOpt[1]; @@ -1064,8 +1067,8 @@ function handleEvent (event) { let handlerCtx = this.$vm; if ( handlerCtx.$options.generic && - handlerCtx.$parent && - handlerCtx.$parent.$parent + handlerCtx.$parent && + handlerCtx.$parent.$parent ) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots handlerCtx = handlerCtx.$parent.$parent; } @@ -1079,18 +1082,22 @@ function handleEvent (event) { } handler.once = true; } - handler.apply(handlerCtx, processEventArgs( + ret.push(handler.apply(handlerCtx, processEventArgs( this.$vm, event, eventArray[1], eventArray[2], isCustom, methodName - )); + ))); } }); } }); + + if (ret.length === 1) { + return ret[0] + } } const hooks = [ diff --git a/src/core/runtime/base.js b/src/core/runtime/base.js index 66bb97f8d..44c6839e0 100644 --- a/src/core/runtime/base.js +++ b/src/core/runtime/base.js @@ -3,4 +3,4 @@ export { } from './upx2px' -export * from '../service/api/interceptor' +export * from '../service/api/base/interceptor' diff --git a/src/core/runtime/wrapper/util.js b/src/core/runtime/wrapper/util.js index 50391e23b..9ad1e7d40 100644 --- a/src/core/runtime/wrapper/util.js +++ b/src/core/runtime/wrapper/util.js @@ -41,8 +41,8 @@ function hasHook (hook, vueOptions) { return true } if (vueOptions.super && - vueOptions.super.options && - Array.isArray(vueOptions.super.options[hook])) { + vueOptions.super.options && + Array.isArray(vueOptions.super.options[hook])) { return true } return false @@ -204,10 +204,10 @@ function parsePropType (key, type, defaultValue, file) { if (__PLATFORM__ === 'mp-baidu') { if ( defaultValue === false && - Array.isArray(type) && - type.length === 2 && - type.indexOf(String) !== -1 && - type.indexOf(Boolean) !== -1 + Array.isArray(type) && + type.length === 2 && + type.indexOf(String) !== -1 && + type.indexOf(Boolean) !== -1 ) { // [String,Boolean]=>Boolean if (file) { console.warn( @@ -294,8 +294,8 @@ function wrapper (event) { if (__PLATFORM__ === 'mp-baidu') { // mp-baidu,checked=>value if ( isPlainObject(event.detail) && - hasOwn(event.detail, 'checked') && - !hasOwn(event.detail, 'value') + hasOwn(event.detail, 'checked') && + !hasOwn(event.detail, 'value') ) { event.detail.value = event.detail.checked } @@ -350,16 +350,16 @@ function processEventExtra (vm, extra, event) { if (Array.isArray(extra) && extra.length) { /** - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *[ - * ['data.items', 'data.id', item.data.id], - * ['metas', 'id', meta.id] - *], - *'test' - */ + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *[ + * ['data.items', 'data.id', item.data.id], + * ['metas', 'id', meta.id] + *], + *'test' + */ extra.forEach((dataPath, index) => { if (typeof dataPath === 'string') { if (!dataPath) { // model,prop.sync @@ -395,8 +395,8 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam let isCustomMPEvent = false // wxcomponent 组件,传递原始 event 对象 if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && - event.currentTarget.dataset && - event.currentTarget.dataset.comType === 'wx' + event.currentTarget.dataset && + event.currentTarget.dataset.comType === 'wx' if (!args.length) { // 无参数,直接传入 event 或 detail 数组 if (isCustomMPEvent) { return [event] @@ -438,30 +438,33 @@ const CUSTOM = '^' function isMatchEventType (eventType, optType) { return (eventType === optType) || - ( - optType === 'regionchange' && - ( - eventType === 'begin' || - eventType === 'end' - ) - ) + ( + optType === 'regionchange' && + ( + eventType === 'begin' || + eventType === 'end' + ) + ) } export function handleEvent (event) { event = wrapper(event) - // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] - const dataset = (event.currentTarget || event.target).dataset - if (!dataset) { - return console.warn(`事件信息不存在`) + // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]] + const dataset = (event.currentTarget || event.target).dataset + if (!dataset) { + return console.warn(`事件信息不存在`) } - const eventOpts = dataset.eventOpts || dataset['event-opts']// 支付宝 web-view 组件 dataset 非驼峰 + const eventOpts = dataset.eventOpts || dataset['event-opts'] // 支付宝 web-view 组件 dataset 非驼峰 if (!eventOpts) { return console.warn(`事件信息不存在`) } // [['handle',[1,2,a]],['handle1',[1,2,a]]] const eventType = event.type + + const ret = [] + eventOpts.forEach(eventOpt => { let type = eventOpt[0] const eventsArray = eventOpt[1] @@ -478,8 +481,8 @@ export function handleEvent (event) { let handlerCtx = this.$vm if ( handlerCtx.$options.generic && - handlerCtx.$parent && - handlerCtx.$parent.$parent + handlerCtx.$parent && + handlerCtx.$parent.$parent ) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots handlerCtx = handlerCtx.$parent.$parent } @@ -493,16 +496,20 @@ export function handleEvent (event) { } handler.once = true } - handler.apply(handlerCtx, processEventArgs( + ret.push(handler.apply(handlerCtx, processEventArgs( this.$vm, event, eventArray[1], eventArray[2], isCustom, methodName - )) + ))) } }) } }) + + if (ret.length === 1) { + return ret[0] + } } -- GitLab