• 项目交互-选择器交互


    选择器交互

    1. <el-select v-model="valueOne" placeholder="年级">
    2. <el-option v-for="item in optionsOne" :key="item.gradeId" :label="item.gradeName" :value="item.gradeId">
    3. el-option>
    4. el-select>
    5. <el-select v-model="valueTwo" placeholder="班级">
    6. <el-option v-for="item in optionsTwo" :key="item.classId" :label="item.className" :value="item.classId">
    7. el-option>
    8. el-select>
    1. data () {
    2. return {
    3. valueOne: '',
    4. valueTwo: '',
    5. gradeId: 4,
    6. optionsOne: [],
    7. optionsTwo: [],
    8. }
    9. }

    1.写接口

    (api)(@/api/user/index.js)

    1. // 查询年级列表
    2. export function searchGradeLists (query) {
    3. return request({
    4. url: '/system/grade/common/list',//接口
    5. method: 'get',
    6. params: query
    7. })
    8. }
    9. // 查询班级列表
    10. export function searchClassList (query) {
    11. return request({
    12. url: '/system/class/list',
    13. method: 'get',
    14. params: query,
    15. })
    16. }

    2.在组件中导入接口

    1. import {
    2. searchGradeLists,
    3. searchClassList,
    4. } from '@/api/user/index'

    3.调用接口

    因为年级选择器一加载页面就应该有数据可以选择,所以需要挂载的时候请求数据

    1. mounted () {
    2. // 因为一加载页面就应该有数据
    3. // 查询年级列表
    4. searchGradeLists({ pageNum: 1, pageSize: 10 }).then(res => {
    5. console.log(res, '哈哈哈哈哈')
    6. this.optionsOne = res.rows
    7. })
    8. },

    4.不能直接像选择班级一样请求接口

    虽然请求年级的数据成功了,现在需要请求班级的数据,但是由于班级的数据的显示是当前选择的年级对应的所有班级。所以选择班级不能直接像选择班级一样请求接口。

    解决:在element-ui中,选中值发生变化时会触发change事件,所以取到当前所选的年级。如下:

    4.1给el-select标签绑定change事件

    1. <el-select v-model="valueOne" placeholder="年级">
    2. <el-option v-for="item in optionsOne" :key="item.gradeId" :label="item.gradeName" :value="item.gradeId">
    3. el-option>
    4. el-select>
    5. <el-select v-model="valueTwo" placeholder="班级">
    6. <el-option v-for="item in optionsTwo" :key="item.classId" :label="item.className" :value="item.classId">
    7. el-option>
    8. el-select>

 4.2因为选择年级后返回e

  1. methods: {
  2. // 选择年级
  3. handleChangeGrade (e) {
  4. console.log(e, '。。')
  5. console.log(this.gradeId, 'idid')
  6. this.gradeId = e
  7. console.log(this.gradeId, ';;;')
  8. console.log(e, '././')
  9. },
  10. }

查看控制台发现选择年级触发的change事件返回的e是gradeId。因此将e赋值给this.gradeId(这个this.gradeId是data里面设置的gradeId)

4.3将返回的gradeId传给请求查询班级的接口

接下来,点击班级选择器时,应该显示年级对应的所有班级(利用change事件返回的gradeId),所以需要将返回的gradeId传给请求查询班级的接口

  1. methods: {
  2. // 选择年级
  3. handleChangeGrade (e) {
  4. console.log(e, '。。')
  5. console.log(this.gradeId, 'idid')
  6. this.gradeId = e
  7. console.log(this.gradeId, ';;;')
  8. console.log(e, '././')
  9. // 新加的代码
  10. // 先清空数组
  11. this.valueTwo = '' //注意需要清空一下第二个选择器的数据
  12. // 将gradeId传给查询班级的方法,并调用这个方法
  13. this.requestClassList(e)
  14. },
  15. // 新加的代码
  16. // 查询班级(查询年级对应的班级列表)
  17. requestClassList (e) {
  18. console.log(e, '???')
  19. searchClassList({ pageNum: 1, pageSize: 10, gradeId: e }).then(res => {
  20. console.log(res, '嘻嘻嘻嘻嘻')
  21. this.optionsTwo = res.rows
  22. })
  23. }
  24. // 注意gradeId: e不能写出e,对象键值对
  25. }

最后在第二个选择器也同理使用change方法,因为后面页面渲染事件需要用到。选择器交互成功!

  • 相关阅读:
    aiohttp ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] 错误处理
    R语言的现代线性回归
    基于战争优化算法(WSO)的光伏模型参数估计研究(Matlab代码实现)
    攻防世界----easytornado笔记
    亚马逊应该如何去做?才能月入万+
    Excel查询时用vlookup或者xlookup时,虽然用的参数选择的是精确匹配,但是发现不能区分大小写,应该如何解决?
    [对比学习LangChain和MAF-03]完全不同的Agent设计哲学
    CENTOS上的网络安全工具(十三)搬到Docker上(1)?
    通过分箱对连续特征离散化,以提高线性模型的表现
    智能sql LLM
  • 原文地址:https://blog.csdn.net/weixin_50632313/article/details/134512543