一、需求

image.png

二、获取一级分类

1、组件数据定义

定义在data中

  1. subjectNestedList: [],//一级分类列表
  2. subSubjectList: []//二级分类列表

2、组件模板

  1. <!-- 所属分类:级联下拉列表 -->
  2. <!-- 一级分类 -->
  3. <el-form-item label="课程类别">
  4. <el-select
  5. v-model="courseInfo.subjectParentId"
  6. placeholder="请选择">
  7. <el-option
  8. v-for="subject in subjectNestedList"
  9. :key="subject.id"
  10. :label="subject.title"
  11. :value="subject.id"/>
  12. </el-select>
  13. </el-form-item>

3、组件脚本

表单初始化时获取一级分类嵌套列表,引入subject api

  1. import subject from '@/api/edu/subject'
  2. 定义方法
  3. init() {
  4. ......
  5. // 初始化分类列表
  6. this.initSubjectList()
  7. },
  8. initSubjectList() {
  9. subject.getNestedTreeList().then(response => {
  10. this.subjectNestedList = response.data.items
  11. })
  12. },

三、级联显示二级分类

1、组件模板

  1. <!-- 二级分类 -->
  2. <el-select v-model="courseInfo.subjectId" placeholder="请选择">
  3. <el-option
  4. v-for="subject in subSubjectList"
  5. :key="subject.value"
  6. :label="subject.title"
  7. :value="subject.id"/>
  8. </el-select>

2、注册change事件

在一级分类的组件中注册change事件

  1. <el-select @change="subjectLevelOneChanged" ......

3、定义change事件方法

  1. subjectLevelOneChanged(value) {
  2. console.log(value)
  3. for (let i = 0; i < this.subjectNestedList.length; i++) {
  4. if (this.subjectNestedList[i].id === value) {
  5. this.subSubjectList = this.subjectNestedList[i].children
  6. this.courseInfo.subjectId = ''
  7. }
  8. }
  9. },