From de2cd1a8f29169e6f7c450c91e4f62fd9330fd86 Mon Sep 17 00:00:00 2001 From: baiyaaaaa Date: Fri, 7 Oct 2016 17:25:56 +0800 Subject: [PATCH] fix clickoutside bug in JSX render --- src/utils/clickoutside.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/utils/clickoutside.js b/src/utils/clickoutside.js index 173c8c3ba..ccbbc6687 100644 --- a/src/utils/clickoutside.js +++ b/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) {