directives.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. module.exports = {
  2. text: function (el, value) {
  3. el.textContent = value || ''
  4. },
  5. show: function (el, value) {
  6. el.style.display = value ? '' : 'none'
  7. },
  8. class: function (el, value, classname) {
  9. el.classList[value ? 'add' : 'remove'](classname)
  10. },
  11. on: {
  12. update: function (el, handler, event, directive) {
  13. if (!directive.handlers) {
  14. directive.handlers = {}
  15. }
  16. var handlers = directive.handlers
  17. if (handlers[event]) {
  18. el.removeEventListener(event, handlers[event])
  19. }
  20. if (handler) {
  21. handler = handler.bind(el)
  22. el.addEventListener(event, handler)
  23. handlers[event] = handler
  24. }
  25. },
  26. unbind: function (el, event, directive) {
  27. if (directive.handlers) {
  28. el.removeEventListener(event, directive.handlers[event])
  29. }
  30. },
  31. customFilter: function (handler, selectors) {
  32. return function (e) {
  33. var match = selectors.every(function (selector) {
  34. return e.target.webkitMatchesSelector(selector)
  35. })
  36. if (match) handler.apply(this, arguments)
  37. }
  38. }
  39. },
  40. repeat: function () {
  41. }
  42. }