settings.js 998 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. var _ = require('../../common');
  2. var hooks = {};
  3. _.options.hook(function (value, key) {
  4. var list = hooks[key];
  5. list && list.forEach(function (el) {
  6. el.checked = value;
  7. });
  8. setTimeout(onChanged, 0, value, key);
  9. });
  10. function onSettingChange(e) {
  11. var target = e.target;
  12. _.options.set(target.dataset.setting, target.checked);
  13. }
  14. function onChanged(value, key) {
  15. if (value && key === 'closeAfterInstall') {
  16. _.options.set('trackLocalFile', false);
  17. }
  18. }
  19. Vue.directive('setting', {
  20. bind: function (el, binding) {
  21. var value = binding.value;
  22. el.dataset.setting = value;
  23. el.addEventListener('change', onSettingChange, false);
  24. var list = hooks[value] = hooks[value] || [];
  25. list.push(el);
  26. el.checked = _.options.get(value);
  27. },
  28. unbind: function (el, binding) {
  29. var value = binding.value;
  30. el.removeEventListener('change', onSettingChange, false);
  31. var list = hooks[value] || [];
  32. var i = list.indexOf(el);
  33. ~i && list.splice(i, 1);
  34. },
  35. });