diff --git a/packages/uni-template-compiler/lib/app/parser/event-parser.js b/packages/uni-template-compiler/lib/app/parser/event-parser.js index 4a41e044c609495ea8293346a4aa5fb69a760ce2..025c645d5f7a19612535bfaed840f5d1abac8184 100644 --- a/packages/uni-template-compiler/lib/app/parser/event-parser.js +++ b/packages/uni-template-compiler/lib/app/parser/event-parser.js @@ -9,21 +9,26 @@ module.exports = function parseEvent (el) { const { events: eventsMap } = deprecated - normalizeEvent(el.events, eventsMap) - normalizeEvent(el.nativeEvents, eventsMap) + normalizeEvent(el, el.events, eventsMap) + normalizeEvent(el, el.nativeEvents, eventsMap) } } -function normalizeEvent (events, eventsMap) { +function normalizeEvent (el, events, eventsMap) { if (!events) { return } + const isMap = el.tag === 'map' || el.tag === 'v-uni-map' Object.keys(events).forEach(name => { // 过时事件类型转换 if (eventsMap[name]) { - events[eventsMap[name]] = events[name] - delete events[name] - // warnLogs.add(`警告:事件${name}已过时,推荐使用${eventsMap[name]}代替`) + if (isMap && name === 'tap') { + // 地图组件有自己特定的 tap 事件,不做转换 + } else { + events[eventsMap[name]] = events[name] + delete events[name] + // warnLogs.add(`警告:事件${name}已过时,推荐使用${eventsMap[name]}代替`) + } } }) } diff --git a/packages/vue-cli-plugin-uni/lib/h5/compiler-options.js b/packages/vue-cli-plugin-uni/lib/h5/compiler-options.js index a17e123214b0b70b960617683be8b2418f6aa950..0751c8545e20965d2107ed606da99fd267d888da 100644 --- a/packages/vue-cli-plugin-uni/lib/h5/compiler-options.js +++ b/packages/vue-cli-plugin-uni/lib/h5/compiler-options.js @@ -87,24 +87,29 @@ module.exports = { events: eventsMap } = deprecated // const warnLogs = new Set() - normalizeEvent(el.events, eventsMap, filterModules) - normalizeEvent(el.nativeEvents, eventsMap, filterModules) + normalizeEvent(el, el.events, eventsMap, filterModules) + normalizeEvent(el, el.nativeEvents, eventsMap, filterModules) } } }] } -function normalizeEvent (events, eventsMap, filterModules) { +function normalizeEvent (el, events, eventsMap, filterModules) { if (!events) { return } + const isMap = el.tag === 'map' || el.tag === 'v-uni-map' Object.keys(events).forEach(name => { // 过时事件类型转换 if (eventsMap[name]) { - events[eventsMap[name]] = events[name] - delete events[name] - // warnLogs.add(`警告:事件${name}已过时,推荐使用${eventsMap[name]}代替`) - name = eventsMap[name] + if (isMap && name === 'tap') { + // 地图组件有自己特定的 tap 事件,不做转换 + } else { + events[eventsMap[name]] = events[name] + delete events[name] + // warnLogs.add(`警告:事件${name}已过时,推荐使用${eventsMap[name]}代替`) + name = eventsMap[name] + } } const handlers = events[name] diff --git a/src/platforms/app-plus/view/components/map/index.vue b/src/platforms/app-plus/view/components/map/index.vue index 5985544ba14fb1d5aa9874d29041db46a855a0c1..7f85fdd96454464cd415ab53ec4fa35f29744a8a 100644 --- a/src/platforms/app-plus/view/components/map/index.vue +++ b/src/platforms/app-plus/view/components/map/index.vue @@ -221,7 +221,8 @@ export default { deep: true }) map.onclick = (e) => { - this.$trigger('click', {}, e) + // 编译器会保留 map 上的 tap 事件 + this.$trigger('tap', {}, e) } map.onstatuschanged = (e) => { this.$trigger('regionchange', {}, {}) diff --git a/src/platforms/h5/view/components/map/index.vue b/src/platforms/h5/view/components/map/index.vue index aa34ffebebe42159627fa88862fef74584a66b1b..b7908fb883cc68a60b1399e617175c3b0a0ef87a 100644 --- a/src/platforms/h5/view/components/map/index.vue +++ b/src/platforms/h5/view/components/map/index.vue @@ -375,8 +375,9 @@ export default { this.$emit('boundsready') }) maps.event.addListener(map, 'click', () => { - // TODO 编译器将 tap 转换为click - this.$trigger('click', {}, {}) + // 编译器会保留 map 上的 tap 事件 + this.$trigger('tap', {}, {}) + // this.$trigger('click', {}, {}) }) maps.event.addListener(map, 'dragstart', () => { this.$trigger('regionchange', {}, {