我目前正在学习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

最佳答案

看看我的 fork

https://jsfiddle.net/b5kf2Lyr/

我所做的是,现在我们有了workDaysOptions计算的数据,该数据将始终不包含选定的休息日返回days。在select-component中,我添加了一个options prop的监视程序,以便在options更改时可以重新初始化select2实例。

请注意,我正在将select2 jQuery对象分配给不是vue数据的this.$select2,因此它不是被动的(我们不需要这样做)。

这可以进一步完善,但我希望它能回答您的问题。

09-25 18:34
查看更多