我目前正在学习vue js。我创建了一个选择组件,当前用于选择员工的“休息日”和“工作日”。基本上,我想要的是在第二个选择输入(工作日)的选项中删除选定的休息日。
我设法加载默认值,但是如果第一个输入已更改,我找不到一种方法来更新第二个选择输入的选项。
Vue.component('select-component',{
props: ['options'],
mounted() {
var self = this;
$(this.$el).select2({
data: this.options
})
.on('change', function(e){
self.$emit('input', $(e.target).val())
});
},
template: '<select></select>'
})
new Vue({
el: '#app',
data: {
days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Saturday'],
workDays: [],
selectedRestDay: 'Sunday',
selectedWorkDays: []
},
created() {
this.getWorkDaysOptions();
},
methods: {
getWorkDaysOptions: function() {
var arr = Object.assign(this.workDays, this.days);
this.workDays = _.pull(arr, this.selectedRestDay)
}
},
watch: {
selectedRestDay: function() {
this.getWorkDaysOptions();
}
}
})
这是我正在研究的示例fiddle
答案 0 :(得分:1)
看看我的叉子
https://jsfiddle.net/b5kf2Lyr/
我所做的是,现在我们有workDaysOptions
个计算数据,将始终返回days
,而没有选择的休息日。在select-component
中,我添加了一个options
道具的观察者,以便我们可以在options
更改时重新初始化select2实例。
请注意,我正在将select2 jQuery对象分配给this.$select2
,这不是vue数据,因此它不是反应性的(我们不需要它)。
这可以进一步完善,但我希望它能回答您的问题。