فهرست منبع

Merge pull request #248 from baiyaaaaa/master

fix clickoutside bug in JSX render
杨奕 8 سال پیش
والد
کامیت
10306ab821
1فایلهای تغییر یافته به همراه7 افزوده شده و 2 حذف شده
  1. 7 2
      src/utils/clickoutside.js

+ 7 - 2
src/utils/clickoutside.js

@@ -11,19 +11,24 @@ const clickoutsideContext = '@@clickoutsideContext';
 export default {
   bind(el, binding, vnode) {
     const documentHandler = function(e) {
-      if (vnode.context && !el.contains(e.target)) {
+      if (!vnode.context || el.contains(e.target)) return;
+      if (binding.expression) {
         vnode.context[el[clickoutsideContext].methodName]();
+      } else {
+        el[clickoutsideContext].bindingFn();
       }
     };
     el[clickoutsideContext] = {
       documentHandler,
-      methodName: binding.expression
+      methodName: binding.expression,
+      bindingFn: binding.value
     };
     document.addEventListener('click', documentHandler);
   },
 
   update(el, binding) {
     el[clickoutsideContext].methodName = binding.expression;
+    el[clickoutsideContext].bindingFn = binding.value;
   },
 
   unbind(el) {