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
     }