当前位置:   article > 正文

el-select下拉框实现双向联动_el-option二级联动

el-option二级联动

效果:

页面有下拉框A和B,

A、B的初始下拉框是所有的A和所有的B,

当A中选中A.X的时候,B中下拉框的内容更新为A.X对应的所有的B,

当B中选中B.X的时候,A中下拉框中的内容是所有的B.X对应的所有的A,

另外,当A或B中的内容被清空时,另外一个下拉框中的选项回复初始值,即所有的选项

表单部分:

——在el-select里面使用@change调用changeANameList不生效

更改为    在el-option里面使用@click.native调用

——使用@clear,实现下拉框内容被清除后,两个下拉框中选项恢复初始值

  1. <el-form-item label="A名称" prop="aName">
  2. <el-select v-model="queryParam.nameA" remote :remote-method="initAName" placeholder="" style="width: 100%;" clearable @clear="changeANameList('')" >
  3. <el-option
  4. v-for="item in aOptions"
  5. :key="item.value"
  6. :label="item.label"
  7. :value="item.value"
  8. @click.native="changeANameList(item.key)">
  9. </el-option>
  10. </el-select>
  11. </el-form-item>
  12. </el-col>
  13. <el-col :span="12">
  14. <el-form-item label="B" prop="bName">
  15. <el-select v-model="queryParam.bName" remote :remote-method="initbNmame" placeholder="" style="width: 100%;" clearable @clear="changebNameList('')">
  16. <el-option
  17. v-for="item in bNameOptions"
  18. :key="item.value"
  19. :label="item.label"
  20. :value="item.value"
  21. @click.native="changebNameList(item.key)">
  22. </el-option>
  23. </el-select>
  24. </el-form-item>
  25. </el-col>

调用的方法:initAName和initBName看具体的项目,考虑是在mounted里面调用还是在弹窗打开(open方法)的时候调用,或者两个都调用,目的是给两个下拉框赋初始值

目前项目状态:

mounted中不调用会出现弹窗打开下拉框内容为空

open中不调用会出现:每次打开弹窗下拉框A B中内容是空的,但下拉框选项是上一次的AB对应的

  1. initAName(name){
  2. let param={}
  3. if(!name){
  4. param={bName:''}
  5. }else{
  6. param={bName:name}
  7. }
  8. //调用接口,注意接口传的是B的值,返回的是A的内容
  9. findAName(param).then(
  10. res=>{
  11. this.aOptions = (res.data || []).map((item) => {
  12. return {
  13. value: item,
  14. label: item,
  15. };
  16. });
  17. }
  18. )},
  19. initBName(name){
  20. let param={}
  21. if(!name){
  22. param={aName:''}
  23. }else{
  24. param={aName:name}
  25. }
  26. //调用接口,注意接口传的是A的值,返回的是B的内容
  27. findBName(param).then(
  28. res=>{
  29. this.bNameOptions = (res.data || []).map((item) => {
  30. return {
  31. value: item,
  32. label: item,
  33. };
  34. });
  35. }
  36. )},
  37. changeANameList(e){
  38. //当下拉框A中的值改变,B中的内容要更新
  39. this.initbNmame(this.queryParam.aName)
  40. },
  41. changeBNameList(e){
  42. //当下拉框B中的值改变,A中的内容要更新
  43. this.initAName(this.queryParam.bName)
  44. },

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号