适用场景:因为实际项目开发中,el-option的数据肯定是从后台获取的,后台不一定给我所有想要的数据,就比如后台返给我的是若干个对象组成的数组,这个数组组成下拉框,但是我们页面显示要求这个下拉框里的部分可选部分不可选,那要怎么解决这个问题呢?这就涉及到给数组对象统一添加字段和el-option实现部分不可选功能的问题了。核心代码如下:
1.template部分:
<el-select>
<el-option v-for="(item,i) in this.arrAfter :key="i" :label="item.name" :value="item.code" :disabled="item.disabled"/>
</el-select>
其中,this.arrAfter是我们最后处理的结果,:disabled="item.disabled"是为了实现不可选功能,这里假设后台传给我们的对象形式为{name:'xxx',code:'xxx'},所以要给每个对象加一个disabled属性,才能实现不可选功能。
2.script部分
mounted(){
// 从后台获取数组,赋值给原数组
let result = response.data
// 声明一个空数组用来村新数组
this.arrAfter = []
// 给要添加的字段赋值
result.disabled = true
// 循环原数组
result.forEach(item=>{
// 要添加的新字段
item.disabled = result.disabled
this.arrAfter.push(item)
})
//以上步骤实现了arrAfter为result数组新增了字段的功能,下面实现部分可选功能
for(let i=0;i<this.arrAfter.length;i++){
if(i%2 == 0){
this.arrAfter[i].disabled = false
}
}
}