Merge pull request #248 from baiyaaaaa/master

fix clickoutside bug in JSX render
pull/254/merge
杨奕 2016-10-07 17:46:13 +08:00 committed by GitHub
commit 10306ab821
1 changed files with 7 additions and 2 deletions

View File

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