1. 程式人生 > 其它 >elementui select多級聯動

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: ''
            },
            type: 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/ 【可實現】