elementui select多级联动


场景:有时候有a,b,c三个下拉选项,b依赖a的选择,c依赖b的选择。本文实现了两级联动,三级联动同理实现

 

        <el-card class="box-card">
          <div slot="header" class="clearfix">
            <span>选择脚本</span>
          </div>
          <div style="height:180px;">
            <el-form ref="scriptConfigForm" :model="scriptConfigForm">
              <el-form-item label="项目">
                <el-select
                  v-model="scriptConfigForm.project"
                  size="small"
                  style="width:70%"
                  filterable
                  remote
                  reserve-keyword
                  :remote-method="remoteProjectMethod"
                  :loading="projectLoad"
                  @visible-change="handleChangeFlag"
                >
                  <el-option
                    v-for="item in projectOptions"
                    :key="item.value"
                    :value="item.value"
                    :label="item.label"
                  />
                </el-select>
              </el-form-item>
              <el-form-item label="脚本">
                <el-select
                  v-model="scriptConfigForm.script"
                  size="small"
                  style="width:70%"
                  @visible-change="handleChangeFlag"
                >
                  <el-option
                    v-for="item in scriptOptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
            </el-form>
          </div>
        </el-card>




 

export default { 
    data() {
        return {
            scriptConfigForm: {
                project: '',
                script: '',
                appids: ''
            },
            changeFlag: false
        }
    watch: {
        'scriptConfigForm.project'(e) {
        if (this.changeFlag) {
            this.scriptConfigForm.script = ''
        }
        if (e) {
            this.scriptOptions.splice(0, this.scriptOptions.length)
            this.fetchListScript(e)
        }
        }
    },
    methods:{
        fetchListScript(projectId) {
        fetchListScript(projectId).then(res => {
            for (var script of res.data.content) {
            this.scriptOptions.push({
                value: script.id,
                label: script.filename
            })
            }
        })
        },
        handleChangeFlag(type) {
        // select回调,判断当前下拉框是否展示
        this.changeFlag = type
        }
    }
}

 

 

 

  

  

参考: 

通过watch监控字段变化

https://blog.csdn.net/only_neo/article/details/82825182 【可实现】

 

通过change监控值变化

https://www.freesion.com/article/59681102408/ 【可实现】

 

 

 

 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM