vue-select2.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. Vue.directive('select2', {
  2. inserted: function (el, binding, vnode) {
  3. let options = binding.value || {};
  4. var select = $(el).select2(options);
  5. select.on("select2:select", (e) => {
  6. el.dispatchEvent(new Event('change', { target: e.target }));
  7. // $emit('change',);
  8. console.log("fire change in insert");
  9. });
  10. select.on("select2:unselect", function (e) {
  11. el.dispatchEvent(new Event('change', { target: e.target }));
  12. console.log("unselect");
  13. });
  14. for (var i = 0; i < vnode.data.directives.length; i++) {
  15. if (vnode.data.directives[i].name == "model") {
  16. $(el).val(vnode.data.directives[i].value);
  17. console.log("new value in inserted:"+vnode.data.directives[i].value);
  18. }
  19. }
  20. $(el).trigger("change");
  21. },
  22. update: function (el, binding, vnode) {
  23. for (var i = 0; i < vnode.data.directives.length; i++) {
  24. if (vnode.data.directives[i].name == "model") {
  25. $(el).val(vnode.data.directives[i].value);
  26. console.log("new value in update:"+vnode.data.directives[i].value);
  27. }
  28. }
  29. $(el).trigger("change");
  30. console.log("fire change in update");
  31. }
  32. });