Vue: 多个el-select不能重复选择相同属性
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
一、场景
1.需求: 用户可自由选择需要修改的对象并同时修改多个属性,需要校验修改对象不能重复选择,但是可供修改属性是固定的
2.目标效果:
二、原理与步骤
1.首先将所有select选项,设置disabled默认false
2.改变select选项,change方法:
①将所有选项disabled置为false,这一步是避免有遗漏
②判断修改项table中是否存在select中的值,若存在,将选项disabled置为true
三、实现
1.主要代码:
<template>
<el-select
v-model="selValue"
:size="$attrs.size"
placeholder="请选择"
@change="canidateChange(scope)"
>
<el-option
v-for="(selc, index) in SelectColumns"
:key="index + selc.item.key"
:label="selc.item.title"
:value="selc.item.key"
:disabled="selc.item.disabled"
></el-option>
</el-select>
</template>
<script>
export default{
name:"",
data(){
const SelectColumns = [
{
item: {
key: "priceType",
title: "属性1",
},
attr: {
is: "el-select",
dictName: "sys_price_type",
}
},
{
item: {
key: "assignSupplierName",
title: "属性2",
// key: "supplierName",
},
attr: {
readonly: true,
is: "el-input",
},
},
{
item: {
key: "input1",
title: "属性3",
},
attr: {
is: "el-input",
}
},
{
item: {
key: "input2",
title: "属性4",
},
attr: {
is: "el-input",
}
},
].map(({ item, attr }) => {
return {
item: { ...item },
attr: {
...attr,
disabled: false,
}
}
});
return {
SelectColumns:SelectColumns,
}
},
methods:{
canidateChange(prop) {
let { $index, row } = prop;
this.SelectColumns = this.SelectColumns.map(({ item, attr }) => {
// 重置
item.disabled = false;
let index = this.innerValue.findIndex(
(inVal) => inVal.candidate === item.key
);
// 存在
if (index !== -1) {
item.disabled = true;
}
return {
item,
attr,
};
});
}
}
}
</script>
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献5条内容
所有评论(0)