当前位置:   article > 正文

Vue+elementUi给select选项值动态从后台获取,同时将选中值的id传给后台_element plus的el-select下拉框连接后端

element plus的el-select下拉框连接后端

给出的问题:

  1. 选项动态从后台获取,同时要实时获取到用户选中值的id
  2. select框有红,黄,蓝三个值,id分别为123
  3. 用户点击红,获取到红的id为1
  4. 用户点击黄,获取到黄的id为2
  5. 用户点击蓝,获取到蓝的id为3

问题步骤分为三步:

  1. 1、点击select框,发送请求到后台取到data值,动态渲染到页面上
  2. 2、点击要选中的值,拿到选中值的id
  3. 3、获取选中值的id,赋值给定义好的某个变量

准备工作:

  1. 创建全局变量data,用于存放后台返回数据
  2. data() {
  3. return {
  4. dataList: {}
  5. }
  6. },
  7. 给el-select设置如下属性:
  8. v-model="dataList.name" // 用于双向绑定
  9. @focus="function1" // 点击select框时被触发的方法
  10. @change="function2(dataList.name)" // 点击要选中的值时被触发的方法
  11. 给el-option设置以下属性:
  12. v-for="item in dataList" // 遍历获取到的select列表data
  13. :key="item.id" // 使用v-for要加key,避免遍历出错
  14. :value="item.id" // option实际值,发送到后台的值
  15. :label="item.name" // option的显示值,用户看到的值
  1. <el-select
  2. v-model="dataList.name"
  3. clearable
  4. placeholder="物品类别"
  5. class="filter-item"
  6. style="width: 140px"
  7. @focus="function1"
  8. @change="function2(dataList.name)">
  9. <el-option
  10. v-for="item in dataList"
  11. :key="item.id"
  12. :value="item.id"
  13. :label="item.name"/>
  14. </el-select>

添加方法:

方法一:没有token验证是可以直接使用axios方法

  1. import axios from 'axios' // 在显示页面导入axios
  2. // 点击了select
  3. function1() {
  4. // 发请求获取渠道下拉框的值【没有token验证是可以直接使用axios方法】
  5. const res = axios.get('url地址');
  6. if (res.code === 200) {
  7. this.data = res.data; // 把获取到的数据赋给this.data
  8. }
  9. }

方法二:有token验证要调用方法

  1. // 在xxx.js文件里面写的查询方法
  2. export function query() {
  3. return request({
  4. url: 'url地址',
  5. method: 'GET'
  6. })
  7. }
  8. import { query } from '@/api/xxx' // 在显示页面导入在xxx.js文件里面写query方法
  9. // 点击了select
  10. function1() {
  11. // 发请求获取渠道下拉框的值
  12. query().then(res => { // 调用导入的query方法进行查询
  13. if (res.code === 200) {
  14. this.data = res.data // 把获取到的数据赋给this.data
  15. }
  16. }).catch(err => {
  17. console.log(err)
  18. })
  19. }

value绑定值是 item.id,select选框选中的直接就是需要的id了

  1. function2(val) {
  2. alert(val) // 此时打印的直接就是id
  3. }

完整的代码:

index.vue

  1. <template>
  2. <div class="app-container">
  3. <!--工具栏-->
  4. <div class="head-container">
  5. <!--select下拉框动态显示数据-->
  6. <el-select
  7. v-model="dataList.name"
  8. clearable
  9. placeholder="物品类别"
  10. class="filter-item"
  11. style="width: 140px"
  12. @focus="function1"
  13. @change="function2(dataList.name)">
  14. <el-option
  15. v-for="item in dataList"
  16. :key="item.id"
  17. :value="item.id"
  18. :label="item.name"/>
  19. </el-select>
  20. </div>
  21. </div>
  22. </template>
  23. <script>
  24. import { query } from '@/api/article'
  25. export default {
  26. data() {
  27. return {
  28. dataList: {}
  29. }
  30. },
  31. methods: {
  32. // 点击了select
  33. function1() {
  34. // 发请求获取渠道下拉框的值
  35. query().then(res => {
  36. if (res.code === 200) {
  37. this.dataList = res.data // 把获取到的数据赋给this.dataList
  38. }
  39. }).catch(err => {
  40. console.log(err)
  41. })
  42. },
  43. function2(val) {
  44. alert(val) // 此时打印的直接就是id
  45. }
  46. }
  47. }
  48. </script>
  49. <style scoped>
  50. </style>

index.js

  1. import request from '@/utils/request'
  2. export function query() {
  3. return request({
  4. url: 'url地址',
  5. method: 'GET'
  6. })
  7. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/547522
推荐阅读
相关标签
  

闽ICP备14008679号