vue 多个下拉如何去重

有N个下拉框 然后用1个model集合

如何实现 当某个下拉框选中1个值之后 其他下拉框的不显示选中的值呢

可否提供点思路呢

我本来是想用计算属性 但是计算属性是不能传参的 所以不能定位到当前的下拉框(因为其他的下拉肯定是不显示当先下拉框的选中 而当前的下拉肯定是有这个值的)

比如说下拉框1 选中值为A的项 我想实现的是 其他的下拉框是不显示A项的 但是下拉框1还是有A的
当下拉框1选中了B的时候 其他的下拉框A显示了 B消失了

阅读 5.9k
3 个回答

计算属性不能传参,但是能获得选中的值啊

<select v-model="select1">
    <option ...>...</option>
</select>
...
{
    data:{
        select1: "A",
        select2: "B",
        select3: "C"
    },
    computed: {
        option() {
            // 可以使用this.select1获取选中的值
            return optionAll.filter(this.select1)
        }
    }
}

那就不要用同一个model,先分成n个,提交表单时再整合一下

<select>
    <option @change="handleChange('A')" v-for="item in getOptions('A')">...</option>
</select>
<select>
    <option @change="handleChange('B')" v-for="item in getOptions('B')">...</option>
</select>
{
    data(){
        return {
            selected: [],
        }
    },
    
    methods: {
        getOptions(index) {
            //根据选中项和当前项过滤。。有急事要走你可以试试这思路
        },
        
        handleChange(index){
            var that = this;
            return function(val){
                var v = {};
                v[index] = val;
                
                that.selected.push(v);
            }
        }
    },
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题