You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ta...@apache.org on 2017/08/10 02:48:33 UTC
[02/12] incubator-weex git commit: * [html5] create actual event for
'click' handlers and stop propagation in vue handlers and also intrinsically
for 'click' event.
* [html5] create actual event for 'click' handlers and stop propagation in vue handlers and also intrinsically for 'click' event.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/1bc4a462
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/1bc4a462
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/1bc4a462
Branch: refs/heads/0.16-dev
Commit: 1bc4a4625b1d1f6beb5e072bc0792beacdaf5dca
Parents: 15bfb7e
Author: MrRaindrop <te...@gmail.com>
Authored: Thu Aug 3 21:36:07 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu Aug 3 21:36:07 2017 +0800
----------------------------------------------------------------------
html5/render/vue/core/node.js | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1bc4a462/html5/render/vue/core/node.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/node.js b/html5/render/vue/core/node.js
index d07f3ed..235fbf9 100644
--- a/html5/render/vue/core/node.js
+++ b/html5/render/vue/core/node.js
@@ -17,7 +17,7 @@
* under the License.
*/
-import { extend, isArray } from '../utils'
+import { isArray, createEvent } from '../utils'
/**
* remove text nodes in the nodes array.
@@ -116,10 +116,7 @@ export function createEventMap (context, ...extras) {
}
let evt = e
if (originalType && evtName !== listenTo) {
- evt = extend({}, { type: listenTo })
- // weex didn't provide these two methods for event object.
- delete event.preventDefault
- delete event.stopPropagation
+ evt = createEvent(e.target, listenTo)
}
on && on.call(vm, evt)
idx++
@@ -178,6 +175,8 @@ export function createEventMap (context, ...extras) {
* we already use tap to trigger click event, so the click event should:
* 1. trigger none of any vm's click listeners.
* 2. prevent default behaviour for a `<a>` element.
+ * 3. stop propagation if triggered already.
+ * 4. set a _triggered flag to the event object if triggered already.
* This means the click event should always be swallowed in silence.
*/
bindFunc('click')(function (e) {
@@ -188,10 +187,10 @@ export function createEventMap (context, ...extras) {
while (vm) {
const ons = getListeners(vm.$vnode, 'click')
const len = ons.length
- if (len > 0 && vm.$el && isInANode(vm.$el)) {
- e.preventDefault()
+ if (len > 0 && vm.$el) {
+ e.stopPropagation()
e._triggered = { el: vm.$el }
- return
+ return isInANode(vm.$el) && e.preventDefault()
}
vm = vm.$parent
}