element-ui的select選項動態(tài)獲取,且二級聯(lián)動

image.png

需求,選擇院系之后,對應的出現(xiàn)專業(yè)

   <el-dialog title="新增班級" :visible.sync="addClass" width="400px">
        <el-form >
            <el-form-item label="班級" :label-width="formLabelWidth">
                <el-input v-model="addData.name"></el-input>
            </el-form-item>
            <el-form-item label="院系" :label-width="formLabelWidth">
                <el-select v-model="addData.institute_name" placeholder="請選擇院系" @change="selectMajor()">
                    <el-option v-for="(institute,index) in instituteData"  
      :value="institute.id" :label="institute.name" :key="index"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="專業(yè)" :label-width="formLabelWidth">
                <el-select v-model="addData.major_name" placeholder="請選擇專業(yè)" ref="major">
                    <el-option  v-for="(major,index) in majorList" :label="major.name" :value="major.name" :key="index"></el-option>
                </el-select>
            </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer">
            <el-button @click="addClass = false">取 消</el-button>
            <el-button type="primary" @click="addCla()">確 定</el-button>
        </div>
</el-dialog>


// 根據(jù)院系選擇專業(yè)
selectMajor:function(){
    const self=this;
    this.addData.major_name = null
    axios({
        method:'post',
        url:'/api/Accountapi/selectMajor',
        data:{institute_id:self.addData.institute_name}
    }).then(function(res){
        self.majorList=res.data.data
    }).catch(function (error) {
        console.log(error);
    });
},
// 增加班級彈框
addClassBox:function(){
    this.addClass=true;
    this.addData={}
},
// 增加班級
addCla:function(){
    const self=this
    let id=self.majorList.filter(item=>item.name===self.addData.major_name)[0].id
    axios({
        method:'post',
        url:'/api/Classapi/classAdd',
        data:{
            name:self.addData.name,
            major_id:id
        }
    }).then(function(res){
        self.cla_data.unshift(self.addData)
        self.$options.methods.getClassList.bind(self)();
        self.addClass=false
    }).catch(function(err){
        console.log(err)
    })
},

這樣可以實現(xiàn),但是有一個問題,如果更改院系之后,下面的專業(yè)應該重置為空,所以加了一句:this.addData.major_name = null,這個問題解決之后,又出現(xiàn)了專業(yè)選擇不上的問題,原來,在新增班級之后重置addData為空的時候,應該要加上對象的類別名,不能直接重置整個對象為空,不然v-model綁定的元素找不到對應的類別,應該將this.addData={}改為 this.addData={
id:0,
name:null,
institute_name:null,
major_name:null
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • vue在最近一段時間火熱起來,相比較于ng特別是ng1和rectjs, vue顯得更加輕,它也迎合了前端模塊化,組...
    拿著號碼牌徘徊閱讀 5,209評論 4 50
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,932評論 0 13
  • 1)通過膚色深淺來反應防曬霜防護力的強弱;三種膚色均來自荷蘭風格主義畫家Cornelis Cornelisz. v...
    安的烈閱讀 632評論 0 0
  • 現(xiàn)在來說,說不出來個所以然了。因為的確感覺到混亂的思維讓我現(xiàn)在可以擠出來的通順的文字已經非常稀少。人在混亂思維下會...
    王不晚閱讀 1,119評論 0 1
  • 藍天 無色無味只有聲, 一年四季各不同。 春澤大地萬物醒, 夏催萬物恣長成。 秋掃樹葉影無蹤, 冬吹大地雪冰封。 ...
    Jack2451閱讀 232評論 0 0

友情鏈接更多精彩內容