Commit de2cd1a8 authored by baiyaaaaa's avatar baiyaaaaa

fix clickoutside bug in JSX render

parent db7eb0ea
...@@ -11,19 +11,24 @@ const clickoutsideContext = '@@clickoutsideContext'; ...@@ -11,19 +11,24 @@ const clickoutsideContext = '@@clickoutsideContext';
export default { export default {
bind(el, binding, vnode) { bind(el, binding, vnode) {
const documentHandler = function(e) { 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](); vnode.context[el[clickoutsideContext].methodName]();
} else {
el[clickoutsideContext].bindingFn();
} }
}; };
el[clickoutsideContext] = { el[clickoutsideContext] = {
documentHandler, documentHandler,
methodName: binding.expression methodName: binding.expression,
bindingFn: binding.value
}; };
document.addEventListener('click', documentHandler); document.addEventListener('click', documentHandler);
}, },
update(el, binding) { update(el, binding) {
el[clickoutsideContext].methodName = binding.expression; el[clickoutsideContext].methodName = binding.expression;
el[clickoutsideContext].bindingFn = binding.value;
}, },
unbind(el) { unbind(el) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment