58 lines
1.4 KiB
JavaScript
Vendored
58 lines
1.4 KiB
JavaScript
Vendored
import Vue from 'vue';
|
|
/*
|
|
// Initialize the annoying-background directive.
|
|
export const SelectTwo = {
|
|
twoWay: true,
|
|
bind(el, binding, vnode) {
|
|
var variblee = this;
|
|
var selectbox = el.getAttribute('id');
|
|
var binding2 = binding;
|
|
var vnode2 = vnode;
|
|
|
|
$(vnode.elm).select2()
|
|
.on("select2:select", function(e) {
|
|
//this.$set($(vnode.elm).val());
|
|
}.bind($(vnode.elm)));
|
|
},
|
|
update: function(nv, ov) {
|
|
$('#' + nv.id).trigger("change");
|
|
}
|
|
}
|
|
|
|
// You can also make it available globally.
|
|
Vue.directive('select-two', SelectTwo);
|
|
*/
|
|
|
|
|
|
Vue.component('select2', {
|
|
props: ['options', 'value'],
|
|
template: '#select2-template',
|
|
mounted: function () {
|
|
var vm = this
|
|
$(this.$el)
|
|
// init select2
|
|
.select2({ data: this.options })
|
|
.val(this.value)
|
|
.trigger('change')
|
|
// emit event on change.
|
|
.on('change', function () {
|
|
vm.$emit('input', this.value)
|
|
})
|
|
},
|
|
watch: {
|
|
value: function (value) {
|
|
// update value
|
|
$(this.$el)
|
|
.val(value)
|
|
.trigger('change')
|
|
},
|
|
options: function (options) {
|
|
// update options
|
|
$(this.$el).empty().select2({ data: options })
|
|
}
|
|
},
|
|
destroyed: function () {
|
|
$(this.$el).off().select2('destroy')
|
|
}
|
|
})
|