使用 Select2(多项选择)和 vue.js
Using Select2 (multiple selections) with vue.js
我是 vue 的新手,在 http://vuejs.org/examples/select2.html 关注了他们的 'custom directive'。
这在只选择一个项目时效果很好,但当你选择多个项目时它只会通过第一个。我需要它来传递所有选定的值。
我设置了一个 jsfiddle 来显示此处提供的代码。
https://jsfiddle.net/f3kd6f14/1/
指令如下;
Vue.directive('select', {
twoWay: true,
priority: 1000,
params: ['options'],
bind: function() {
var self = this
$(this.el)
.select2({
data: this.params.options
})
.on('change', function() {
self.set(this.value)
})
},
update: function(value) {
$(this.el).val(value).trigger('change')
},
unbind: function() {
$(this.el).off().select2('destroy')
}
如有任何帮助,我们将不胜感激。
当 Select2 处于多值模式时,this.value
无法像您预期的那样工作(更多信息请参见:Get Selected value from Multi-Value Select Boxes by jquery-select2?)。
试试这个(在这里 fiddle 工作:https://jsfiddle.net/02rafh8p/):
Vue.directive('select', {
twoWay: true,
priority: 1000,
params: ['options'],
bind: function() {
var self = this
$(this.el)
.select2({
data: this.params.options
})
.on('change', function() {
self.set($(self.el).val()) // Don't use this.value
})
},
update: function(value) {
$(this.el).val(value).trigger('change')
},
unbind: function() {
$(this.el).off().select2('destroy')
}
})
var vm = new Vue({
el: '#el',
data: {
selected: [], // Result is an array of values.
roles : [
{ id: 1, text: 'hello' },
{ id: 2, text: 'what' }
]
}
})
在 Vue 2 中,获取所有 select2 值 onchange:
改变这个:
.on('change', function () {
self.$emit('input', this.value); // Don't use this.value
});
为此:
.on('change', function () {
self.$emit('input', $(this).val());
});
我是 vue 的新手,在 http://vuejs.org/examples/select2.html 关注了他们的 'custom directive'。
这在只选择一个项目时效果很好,但当你选择多个项目时它只会通过第一个。我需要它来传递所有选定的值。
我设置了一个 jsfiddle 来显示此处提供的代码。 https://jsfiddle.net/f3kd6f14/1/
指令如下;
Vue.directive('select', {
twoWay: true,
priority: 1000,
params: ['options'],
bind: function() {
var self = this
$(this.el)
.select2({
data: this.params.options
})
.on('change', function() {
self.set(this.value)
})
},
update: function(value) {
$(this.el).val(value).trigger('change')
},
unbind: function() {
$(this.el).off().select2('destroy')
}
如有任何帮助,我们将不胜感激。
this.value
无法像您预期的那样工作(更多信息请参见:Get Selected value from Multi-Value Select Boxes by jquery-select2?)。
试试这个(在这里 fiddle 工作:https://jsfiddle.net/02rafh8p/):
Vue.directive('select', {
twoWay: true,
priority: 1000,
params: ['options'],
bind: function() {
var self = this
$(this.el)
.select2({
data: this.params.options
})
.on('change', function() {
self.set($(self.el).val()) // Don't use this.value
})
},
update: function(value) {
$(this.el).val(value).trigger('change')
},
unbind: function() {
$(this.el).off().select2('destroy')
}
})
var vm = new Vue({
el: '#el',
data: {
selected: [], // Result is an array of values.
roles : [
{ id: 1, text: 'hello' },
{ id: 2, text: 'what' }
]
}
})
在 Vue 2 中,获取所有 select2 值 onchange:
改变这个:
.on('change', function () {
self.$emit('input', this.value); // Don't use this.value
});
为此:
.on('change', function () {
self.$emit('input', $(this).val());
});