我开始使用vue.js,对于我的项目,我看到需要使用vue.js官方网站中的以下select2包装器组件,这是链接:https://vuejs.org/v2/examples/select2.html问题是我需要现在发出根事件以更改select2的值,这就是为什么在以下部分中添加一行代码的原因:

.on('change', function () {
  vm.$emit('input', this.value);
  vm.$root.$emit('eventing', this.value);
})


这行得通,但是我从vue控制台意识到,我的事件被广播了两次,我以为是我的代码问题,删除了添加的行,但是输入事件也被发出了两次,我的问题是:这是正常现象吗?这样做不好吗?我缺少一些东西。对我来说,这是一个发出两次的问题,因为自从我进行活动以来,我正在进行ajax调用,并且两次执行相同。

最佳答案

有一种使用vue将数据绑定到select2的简单方法:

Vue.directive('select', {
  twoWay: true,
  bind: function (el, binding, vnode) {
      $(el).select2().on("select2:select", (e) => {
        // v-model looks for
        //  - an event named "change"
        //  - a value with property path "$event.target.value"
        el.dispatchEvent(new Event('change', { target: e.target }));
    });
  },
 });


这绑定到Vue实例上的所有选择,因此它们可以与v-model一起使用,并且可以使用select2

之后,将v-model =“”和v-select =“”添加到select2定位的目标对象中,然后进行设置。

归功于:Select2 on change event is not working in Vuejs

09-30 18:56
查看更多