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) {