clickoutside.js 556 B

123456789101112131415161718192021
  1. export default {
  2. bind (el, binding, vnode) {
  3. function documentHandler (e) {
  4. if (el.contains(e.target)) {
  5. return false;
  6. }
  7. if (binding.expression) {
  8. binding.value(e);
  9. }
  10. }
  11. el.__vueClickOutside__ = documentHandler;
  12. document.addEventListener('click', documentHandler);
  13. },
  14. update () {
  15. },
  16. unbind (el, binding) {
  17. document.removeEventListener('click', el.__vueClickOutside__);
  18. delete el.__vueClickOutside__;
  19. }
  20. };