提交 2b14a9b7 编写于 作者: fxy060608's avatar fxy060608

fix(runtime): mp triggerEvent

上级 8d183a3f
...@@ -270,10 +270,12 @@ const customize = cached((str) => { ...@@ -270,10 +270,12 @@ const customize = cached((str) => {
}); });
function initTriggerEvent (mpInstance) { function initTriggerEvent (mpInstance) {
const oldTriggerEvent = mpInstance.triggerEvent; if (wx.canIUse('nextTick')) { // 微信旧版本基础库不支持重写triggerEvent
mpInstance.triggerEvent = function (event, ...args) { const oldTriggerEvent = mpInstance.triggerEvent;
return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]) mpInstance.triggerEvent = function (event, ...args) {
}; return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])
};
}
} }
Page = function (options = {}) { Page = function (options = {}) {
...@@ -412,11 +414,18 @@ function wrapper$1 (event) { ...@@ -412,11 +414,18 @@ function wrapper$1 (event) {
event.preventDefault = noop; event.preventDefault = noop;
event.target = event.target || {}; event.target = event.target || {};
event.detail = event.detail || {};
if (!hasOwn(event, 'detail')) {
event.detail = {};
}
// TODO 又得兼容 mpvue 的 mp 对象 // TODO 又得兼容 mpvue 的 mp 对象
event.mp = event; event.mp = event;
event.target = Object.assign({}, event.target, event.detail);
if (isPlainObject(event.detail)) {
event.target = Object.assign({}, event.target, event.detail);
}
return event return event
} }
...@@ -489,15 +498,15 @@ function processEventExtra (vm, extra) { ...@@ -489,15 +498,15 @@ function processEventExtra (vm, extra) {
} }
function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) { function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {
let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象
if (isCustom) { // 自定义事件 if (isCustom) { // 自定义事件
if ( isCustomMPEvent = event.currentTarget &&
event.currentTarget &&
event.currentTarget.dataset && event.currentTarget.dataset &&
event.currentTarget.dataset.comType === 'wx' event.currentTarget.dataset.comType === 'wx';
) { // wxcomponent 原生组件,传递原始 event 对象 if (!args.length) { // 无参数,直接传入 event 或 detail 数组
return [event] if (isCustomMPEvent) {
} return [event]
if (!args.length) { // 无参数,直接传入 detail 数组 }
return event.detail return event.detail
} }
} }
...@@ -510,7 +519,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam ...@@ -510,7 +519,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam
if (methodName === '__set_model' && !isCustom) { // input v-model value if (methodName === '__set_model' && !isCustom) { // input v-model value
ret.push(event.target.value); ret.push(event.target.value);
} else { } else {
ret.push(isCustom ? event.detail[0] : event); if (isCustom && !isCustomMPEvent) {
ret.push(event.detail[0]);
} else { // wxcomponent 组件或内置组件
ret.push(event);
}
} }
} else { } else {
if (typeof arg === 'string' && hasOwn(extraObj, arg)) { if (typeof arg === 'string' && hasOwn(extraObj, arg)) {
......
{ {
"name": "@dcloudio/uni-app-plus", "name": "@dcloudio/uni-app-plus",
"version": "0.0.211", "version": "0.0.212",
"description": "uni-app app-plus", "description": "uni-app app-plus",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
...@@ -297,10 +297,12 @@ const customize = cached((str) => { ...@@ -297,10 +297,12 @@ const customize = cached((str) => {
}); });
function initTriggerEvent (mpInstance) { function initTriggerEvent (mpInstance) {
const oldTriggerEvent = mpInstance.triggerEvent; if (wx.canIUse('nextTick')) { // 微信旧版本基础库不支持重写triggerEvent
mpInstance.triggerEvent = function (event, ...args) { const oldTriggerEvent = mpInstance.triggerEvent;
return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]) mpInstance.triggerEvent = function (event, ...args) {
}; return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])
};
}
} }
Page = function (options = {}) { Page = function (options = {}) {
...@@ -439,11 +441,18 @@ function wrapper$1 (event) { ...@@ -439,11 +441,18 @@ function wrapper$1 (event) {
event.preventDefault = noop; event.preventDefault = noop;
event.target = event.target || {}; event.target = event.target || {};
event.detail = event.detail || {};
if (!hasOwn(event, 'detail')) {
event.detail = {};
}
// TODO 又得兼容 mpvue 的 mp 对象 // TODO 又得兼容 mpvue 的 mp 对象
event.mp = event; event.mp = event;
event.target = Object.assign({}, event.target, event.detail);
if (isPlainObject(event.detail)) {
event.target = Object.assign({}, event.target, event.detail);
}
return event return event
} }
...@@ -516,15 +525,15 @@ function processEventExtra (vm, extra) { ...@@ -516,15 +525,15 @@ function processEventExtra (vm, extra) {
} }
function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) { function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {
let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象
if (isCustom) { // 自定义事件 if (isCustom) { // 自定义事件
if ( isCustomMPEvent = event.currentTarget &&
event.currentTarget &&
event.currentTarget.dataset && event.currentTarget.dataset &&
event.currentTarget.dataset.comType === 'wx' event.currentTarget.dataset.comType === 'wx';
) { // wxcomponent 原生组件,传递原始 event 对象 if (!args.length) { // 无参数,直接传入 event 或 detail 数组
return [event] if (isCustomMPEvent) {
} return [event]
if (!args.length) { // 无参数,直接传入 detail 数组 }
return event.detail return event.detail
} }
} }
...@@ -537,7 +546,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam ...@@ -537,7 +546,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam
if (methodName === '__set_model' && !isCustom) { // input v-model value if (methodName === '__set_model' && !isCustom) { // input v-model value
ret.push(event.target.value); ret.push(event.target.value);
} else { } else {
ret.push(isCustom ? event.detail[0] : event); if (isCustom && !isCustomMPEvent) {
ret.push(event.detail[0]);
} else { // wxcomponent 组件或内置组件
ret.push(event);
}
} }
} else { } else {
if (typeof arg === 'string' && hasOwn(extraObj, arg)) { if (typeof arg === 'string' && hasOwn(extraObj, arg)) {
......
{ {
"name": "@dcloudio/uni-mp-weixin", "name": "@dcloudio/uni-mp-weixin",
"version": "0.0.930", "version": "0.0.931",
"description": "uni-app mp-weixin", "description": "uni-app mp-weixin",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
...@@ -114,17 +114,28 @@ function wrapper (event) { ...@@ -114,17 +114,28 @@ function wrapper (event) {
event.preventDefault = noop event.preventDefault = noop
event.target = event.target || {} event.target = event.target || {}
event.detail = event.detail || {}
if (!hasOwn(event, 'detail')) {
event.detail = {}
}
if (__PLATFORM__ === 'mp-baidu') { // mp-baidu,checked=>value if (__PLATFORM__ === 'mp-baidu') { // mp-baidu,checked=>value
if (hasOwn(event.detail, 'checked') && !hasOwn(event.detail, 'value')) { if (
isPlainObject(event.detail) &&
hasOwn(event.detail, 'checked') &&
!hasOwn(event.detail, 'value')
) {
event.detail.value = event.detail.checked event.detail.value = event.detail.checked
} }
} }
// TODO 又得兼容 mpvue 的 mp 对象 // TODO 又得兼容 mpvue 的 mp 对象
event.mp = event event.mp = event
event.target = Object.assign({}, event.target, event.detail)
if (isPlainObject(event.detail)) {
event.target = Object.assign({}, event.target, event.detail)
}
return event return event
} }
...@@ -197,15 +208,15 @@ function processEventExtra (vm, extra) { ...@@ -197,15 +208,15 @@ function processEventExtra (vm, extra) {
} }
function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) { function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {
let isCustomMPEvent = false // wxcomponent 组件,传递原始 event 对象
if (isCustom) { // 自定义事件 if (isCustom) { // 自定义事件
if ( isCustomMPEvent = event.currentTarget &&
event.currentTarget &&
event.currentTarget.dataset && event.currentTarget.dataset &&
event.currentTarget.dataset.comType === 'wx' event.currentTarget.dataset.comType === 'wx'
) { // wxcomponent 原生组件,传递原始 event 对象 if (!args.length) { // 无参数,直接传入 event 或 detail 数组
return [event] if (isCustomMPEvent) {
} return [event]
if (!args.length) { // 无参数,直接传入 detail 数组 }
return event.detail return event.detail
} }
} }
...@@ -218,7 +229,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam ...@@ -218,7 +229,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam
if (methodName === '__set_model' && !isCustom) { // input v-model value if (methodName === '__set_model' && !isCustom) { // input v-model value
ret.push(event.target.value) ret.push(event.target.value)
} else { } else {
ret.push(isCustom ? event.detail[0] : event) if (isCustom && !isCustomMPEvent) {
ret.push(event.detail[0])
} else { // wxcomponent 组件或内置组件
ret.push(event)
}
} }
} else { } else {
if (typeof arg === 'string' && hasOwn(extraObj, arg)) { if (typeof arg === 'string' && hasOwn(extraObj, arg)) {
......
...@@ -13,9 +13,11 @@ const customize = cached((str) => { ...@@ -13,9 +13,11 @@ const customize = cached((str) => {
}) })
function initTriggerEvent (mpInstance) { function initTriggerEvent (mpInstance) {
const oldTriggerEvent = mpInstance.triggerEvent if (wx.canIUse('nextTick')) { // 微信旧版本基础库不支持重写triggerEvent
mpInstance.triggerEvent = function (event, ...args) { const oldTriggerEvent = mpInstance.triggerEvent
return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]) mpInstance.triggerEvent = function (event, ...args) {
return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])
}
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册