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

fix(runtime): mp triggerEvent

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