VueJS Select2指令不会触发@change事件

iGi*_*das 8 javascript jquery-select2 vue.js

正如标题所说,我使用他们页面中的示例为VueJS 1.0.15注册了Select2指令.我想捕捉@change事件,但它不起作用.

HTML:

<select v-select="item.service" :selected="item.service" @change="serviceChange(item)">
  <option value="1">test 1</option>
  <option value="2">test 2</option>
</select>
Run Code Online (Sandbox Code Playgroud)

JS:

Vue.directive('select', {
    twoWay: true,
    params: ['selected'],
    bind: function () {
        var self = this
        $(this.el)
            .select2({
                minimumResultsForSearch: Infinity
            })
            .val(this.params.selected)
            .on('change', function () {
                console.log('changed');
                self.set(this.value);
            })
    },
    update: function (value) {
        $(this.el).val(value).trigger('change')
    },
    unbind: function () {
        $(this.el).off().select2('destroy')
    }
});

var Checkout = new Vue({
      el: '.Checkout',
      methods: {
      serviceChange: function (item) {
          console.log(item);
      },
    }
});
Run Code Online (Sandbox Code Playgroud)

sux*_*xur 7

扩展到Alberto Garcia的回答.

var selectDropDown = $(".select-drop-down").select2();

selectDropDown.on('select2:select', function (e) {
    var event = new Event('change');
    e.target.dispatchEvent(event);
});
Run Code Online (Sandbox Code Playgroud)


小智 -1

你不应该使用 $emit 吗?

update: function (value) {
    $(this.el).val(value);
    this.$emit('change');
}
Run Code Online (Sandbox Code Playgroud)