* [html5] distinguish gesture events with what generated by other libs.

Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/22f65ee0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/22f65ee0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/22f65ee0

Branch: refs/heads/0.16-dev
Commit: 22f65ee0686a8a5fb5b8ee2b918a6e26c17ad628
Parents: 1bc4a46
Author: MrRaindrop <tekk...@gmail.com>
Authored: Fri Aug 4 15:42:53 2017 +0800
Committer: MrRaindrop <tekk...@gmail.com>
Committed: Fri Aug 4 15:42:53 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/config.js      | 11 ++++++++++-
 html5/render/vue/core/node.js   | 12 +++++++++---
 html5/render/vue/lib/gesture.js |  6 ++++++
 3 files changed, 25 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22f65ee0/html5/render/vue/config.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/config.js b/html5/render/vue/config.js
index 86c2489..d995803 100644
--- a/html5/render/vue/config.js
+++ b/html5/render/vue/config.js
@@ -17,5 +17,14 @@
  * under the License.
  */
 export default {
-  scrollableTypes: ['scroller', 'list', 'waterfall']
+  scrollableTypes: ['scroller', 'list', 'waterfall'],
+  gestureEvents: [
+    'longpress',
+    'panstart',
+    'panmove',
+    'panend',
+    'swipe',
+    'longpress',
+    'tap'
+  ]
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22f65ee0/html5/render/vue/core/node.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/node.js b/html5/render/vue/core/node.js
index 235fbf9..002c8e7 100644
--- a/html5/render/vue/core/node.js
+++ b/html5/render/vue/core/node.js
@@ -18,6 +18,7 @@
  */
 
 import { isArray, createEvent } from '../utils'
+import config from '../config'
 
 /**
  * remove text nodes in the nodes array.
@@ -80,6 +81,7 @@ function isInANode (el) {
  */
 export function createEventMap (context, ...extras) {
   const eventMap = {}
+  const gestureEvents = config.gestureEvents
   /**
    * Bind some original type event to your specified type event handler.
    * e.g. bind 'tap' event to 'click' event listener: bindFunc('tap')('click').
@@ -95,12 +97,16 @@ export function createEventMap (context, ...extras) {
       else if (typeof listenTo === 'string') {
         handler = function (e) {
           /**
-           * allow original bubbling.
-           * use '_triggered' to control actural bubbling.
+           * 1. use '_triggered' to control actural bubbling (allow original 
bubbling).
+           * 2. use '_for' to distinguish from gesture events generated by 
other
+           *    not-vue-render librarys.
            */
-          if (e._triggered) {
+          if (e._triggered
+            || gestureEvents.indexOf(originalType) > -1
+            && e._for !== 'weex') {
             return
           }
+
           // but should trigger the closest parent which has bound the
           // event handler.
           let vm = context

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22f65ee0/html5/render/vue/lib/gesture.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/lib/gesture.js b/html5/render/vue/lib/gesture.js
index 7ed0592..62ad226 100644
--- a/html5/render/vue/lib/gesture.js
+++ b/html5/render/vue/lib/gesture.js
@@ -78,6 +78,12 @@ function fireEvent(element, type, extra) {
     }
   }
 
+  /**
+   * A flag to distinguish with other events with the same name generated
+   * by another library in the same page.
+   */ 
+  event._for = 'weex'
+
   element.dispatchEvent(event)
 }
 

Reply via email to