el-select下拉框没有数据

2023-05-16

目录

一、问题

二、问题详细描述

 三、解决方法

四、总结


一、问题

1.突然发现给options赋值了,但是下拉框没有数据,就很奇怪。

二、问题详细描述

1.直接用假数据(手动添加的数据)赋值给options,下拉框中的数据正常显示。

  1)代码如下:

<template>
    <template v-for="(contentItem, contentKey) of content">
      <el-select
        v-model="contentItem.value"
        :key="contentKey"
        placeholder="请选择人员"
      >
        <el-option
          v-for="(item, itemKey) of contentItem.options"
          :key="itemKey"
          :value="item[contentItem.matchKey]"
          :lable="item[contentItem.matchKey]"
        >
          <span>{{ item[contentItem.matchKey] }}</span>
          <span>{{ item[contentItem.lable] }}</span>
        </el-option>
      </el-select>
    </template>
</template>
<script>
export default {
  data() {
    return {
      //下拉框数据
      content: {
        person: {
          value: "",
          matchKey: "name",
          type: "select",
        },
      },
    },
   },
   mounted(){
      this.initData();
      this.content.person.value = "奇怪的事情";
   },
   methods:{
   initData(){
       this.getPerson();
    },
    //获取用户
    getPerson() {
      console.log("person---get");
      this.content.person.options = {
        0: {
          name: "小明",
          id: "01",
        },
        1: {
          name: "小华",
          id: "02",
        },
        2: {
          name: "小青",
          id: "1000000000000001",
        },
      };
   }
}
</script>

  2)效果如图1所示

图 1

2.调用接口添加数据

   1)代码如下:

  

<template>
    <template v-for="(contentItem, contentKey) of content">
      <el-select
        v-model="contentItem.value"
        :key="contentKey"
        placeholder="请选择人员"
      >
        <el-option
          v-for="(item, itemKey) of contentItem.options"
          :key="itemKey"
          :value="item[contentItem.matchKey]"
          :lable="item[contentItem.matchKey]"
        >
          <span>{{ item[contentItem.matchKey] }}</span>
          <span>{{ item[contentItem.lable] }}</span>
        </el-option>
      </el-select>
    </template>
</template>
<script>
import { _findPacuDoctorList } from "@/api/implemenceAPI";
export default {
  data() {
    return {
      //下拉框数据
      content: {
        person: {
          value: "",
          matchKey: "name",
          type: "select",
        },
      },
    },
  }
   mounted(){
      this.initData();
      this.content.person.value = "奇怪的事情";
   },
   methods:{
   initData(){
       this.getPerson();
    },
    //获取用户
    getPerson() {
      console.log("person---get");
      let params = {
        data: {
          type: 4,
          name: typeof inputContent === "string" ? inputContent : "",
        },
        size: "100",
        sortBy: "name",
      };
      _findPacuDoctorList(params)
        .then((result) => {
          if (result.status === 200) {
            console.log("result", result);
            this.content.person.options = result.data.content;
          }
        })
        .catch((error) => {
          console.log("error", error);
        });
   }
}
</script>

   2)效果如图2所示:

    调用了接口,并且有数据返回,但是   下拉框中没有数据

图 2

3.百思不得其解呀,明明就是类似的东西,只是一个是直接赋值,一个是调接口赋值而已,怎么会这样呢?

1)更奇葩的是我想复现上述1、2所示的情况时,发现1无法复现---即直接赋值也会 导致图2的效果,下拉框无数据。

a.仔细对比后,发现上述1所示现象的前提条件是 给下拉框数据options赋值前,对该下拉框出现的值 提前赋初始值(如代码1中mounted函数中的:      this.content.person.value = "奇怪的事情";
)

b.若删除代码1中的       this.content.person.value = "奇怪的事情";则会发现下拉框  如图2 所示,下拉框中没有数据

4.更神奇的事情,若 代码1和代码2合并,即先用假数据给options赋值,再用接口获取数据给options赋值。则会导致第一次点击下拉框数据是:假数据,并选中一个选项,如图3所示;之后点击下拉框数据是:调用接口获取的数据,如图4所示。

图 3 第一次点击下拉框并选中一个数据

图 4 之后点击下拉框

 三、解决方法

1.仔细检查才发现,上面的奇葩现象是因为我声明  data时  没有添加 options属性。options属性不是响应式的。

    如  二、问题详细描述 , 4中描述的情况:在mount时已经给 person赋值,data初始化完毕,第一次选择的时候,先用假数据给options赋值,下拉框有了数据,接着异步调用接口给options重新赋值,但因为options是非响应式的,没有更新。选择一个选项,触发点击事件的同时,还触发了 updatePopper事件,更新了下拉框的值.所以之后点击下拉框数据都是 调用接口返回的数据

图 5 执行点击事件后,最后执行了  updatePopper

  data() {
    return {
      //下拉框数据
      content: {
        person: {
          value: "",
          matchKey: "name",
          type: "select",
        },
      },
    },
   },

2.在data中添加 options属性即可: options:[]

  data() {
    return {
      //下拉框数据
      content: {
        person: {
          value: "",
          matchKey: "name",
          type: "select",
          options:[],
        },
      },
    },
   },

 上述所述的奇葩问题都没有了。

  1)直接用假数据赋值,下拉框有值

  2)直接用接口返回值赋值,下拉框有值

  3)先用假数据赋值,再用接口返回值赋值,下拉框有值(接口返回值)

四、总结

1.赋值后下拉框不显示数据,或下拉框数据需要先执行点击操作等才被更新等情况,请仔细检查 options是否在 data中声明过(是否是响应式的)。

2.以上是自己在写代码中踩得坑,之前也有一直看到响应式有关的内容,但并没有真正get到。这次算是认识了一点点。

/*

希望对你有帮助!

如有错误,欢迎指正!非常感谢!

*/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

el-select下拉框没有数据 的相关文章

  • 当Where子句中的术语不在数据库中时,如何从MySQL数据库返回0?

    如果 WHERE 子句中的邻域不存在 如何让 mysql 数据库返回 0 因此 在下面的示例中 旧城区不在数据库中 我希望数据库返回 0 个事件而不是空结果 SELECT incidents neighborhoods FROM myTab
  • MySQL 中两个 Select 查询的结果相减

    我编写了两个 mysql 查询 一个获取一年中特定月份的总用户 注册 另一个获取一年中特定月份的活跃用户 我需要找到数量inactive当年的用户 为此 我正在考虑减去通过两个单独的查询获得的总用户数和活动用户列 以下是查询 1 Fetch
  • 选择不带 FROM 但有多于一行的选择

    如何在不从现有表中进行选择的情况下生成 2 行 2 列的表 我正在寻找的是一个返回的选择语句 e g id value 1 103 2 556 Use UNION http dev mysql com doc refman 5 0 en u
  • 如何终止正在运行的 SELECT 语句

    如何通过终止会话来停止正在运行的 SELECT 语句 该命令不断根据 SELECT 语句向我提供输出 我想在其间停止它 As you keep getting pages of results I m assuming you starte
  • postgresql 不同的不工作

    我使用以下代码从数据库获取值 但是当我编写这段代码时 测试看看问题出在哪里 我注意到查询没有从数据库中获取不同的值 这是查询 select distinct ca id as id acc name as accName pIsu name
  • 从表中选择行,其中另一个表中具有相同 id 的行在另一列中具有特定值

    在 MySQL 中 如果我们有两个表 comments key value 1 foo 2 bar 3 foobar 4 barfoo and meta comment key value 1 1 2 1 3 2 4 1 我想得到来自以下人
  • MySQL SELECT OpenCarts 数据库中的重复行

    只是玩一下 OpenCart DB 看看我是否能学到一些东西 如果我使用以下SELECT结果返回重复的行 SELECT DISTINCT p product id AS pid p model AS modelo SUBSTRING p m
  • 查询获取每条记录的最小日期[重复]

    这个问题在这里已经有答案了 我想获取表中每条记录的最小日期 该表具有多个带有一个主键的日期条目 看看我的桌子 CaseNo Entry date ABC 001 2 12 13 ABC 002 2 09 13 ABC 001 1 01 13
  • 在 SQL 中搜索 XML 列

    我有一个 XML 文档来存储 Oracle 数据库中的记录 表 CourseXML 将包含 Record Number int XML Type int XMLDoc clob etc 我想通过 XML 标签在 XMLDoc 列中进行搜索
  • 从 mysql 检索数据并通过电子邮件发送

    我有一个 php 页面 它显示 mysql 数据库中每个用户的课程表数据 如下所示 result mysql query sql echo table border 0 thead tr th Class Link th th Studen
  • 如何使用CSS缩进多级select optgroup?

    只是试图通过嵌套深度缩进 optgroup 块 我尝试了一般margin left规则 嵌套元素然后尝试应用相同的规则 尝试过padding left 这样的缩进可能吗 看起来很简单 P 在下面的示例中 标记为 client2 a 的 op
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • 使用 jQuery 按标题选择 div

    我有一个带有 div 的网页 其中包含其他几个没有关联 ID 的 div div div title jhon style width 8px height 9px div div title carl style width 8px he
  • 在选择下拉列表中选择特定选项时添加输入框

    我需要在选择选项时将输入添加到选择选项中 每当用户选择 其他 时 就会出现一个输入框供用户输入数据 HTML
  • SQL SELECT 对值求和,不包括重复项

    我在 Oracle SQL 中遇到一个问题 我正在尝试解决这个问题 我将用一个例子来说明 我正在查询三个表 Employees EmployeeID Name 1 John Smith 2 Douglas Hoppalot 3 Harry
  • MySQL:根据 ORDER BY 更新“排序”列

    完全编辑 我的查询有来自 2 个表的 2 列 文件名和排序顺序 完整的表格在这里完成http sqlfiddle com 9 8c0507 http sqlfiddle com 9 8c0507 Example SELECT FROM ta
  • 选择时的套接字阻塞和超时

    我目前正在创建一个回显服务器 该服务器在空闲 maxWaitTime 后断开客户端连接 我希望程序会阻塞套接字 直到客户端发送数据 但是当我在 gdb 中运行该程序时 它会通过 select 并阻塞 Readline 我知道 retval
  • 覆盖 Enter 键的 SELECT 行为

    使用 HTML 控件 其操作或多或少类似于电子表格 具有可编辑数据单元格的矩阵 当涉及从 SELECT 派生的单元格时 当选择该类型的单元格进行编辑时 我遇到了获得正确行为的问题 如果我使用默认格式 大小 0 渲染 Select 则用户会得
  • 使用 where 进行 select 语句时,HSQLDB 用户缺乏权限或未找到对象错误

    我的数据库使用 SQuirrel SQL 客户端版本 3 5 3 和 HSQLDB 我已经能够为其指定相应的驱动程序 内存中 并创建一个别名 我创建了一个表 CREATE TABLE ENTRY NAME VARCHAR 100 NOT N
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ

随机推荐

  • Snipaste常用快捷键(详细总结)

    Snipaste快捷键 xff08 详细总结 xff09 全局快捷键 全局操作截屏F1贴图F3退出当前截图Esc截屏并自动复制Ctrl 43 F1隐藏 显示所有贴图Shift 43 F3切换到另一组贴图Ctrl 43 F3 鼠标贴图相关操作
  • 4位数值比较器电路

    4位数值比较器电路 题目描述 xff1a 使用门级描述方式 xff0c 实现4位数值比较器 某4位数值比较器的功能如下表 96 timescale 1ns 1ns module comparator 4 input 3 0 A input
  • Maven项目pom.xml project标签爆红解决方法

    今天在打开项目的时候 xff0c 发现了一个Maven项目的问题 xff0c 在Maven项目的pom xml文件中 xff0c project标签爆出了一个错误 parent relativePath of POM com hrp spr
  • 人工智能学习笔记五——孪生神经网络

    本文将用孪生神经网络模型 xff0c 对手写数字集minist进行相似度比较 xff0c 用的框架是keras 如果还不清楚神经网络 xff0c 可以看一下这篇文章 神经网络 caodong0225 github io MNIST 是一个手
  • Docker Swarm实战初探

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 环境 宿主机 xff1a macOS 10 15 7虚拟机平台 xff1a Parallels Desktop 15 1 2虚拟机
  • 零基础DIY四轴飞行器超级详细保姆级教程(STM32F407ZGT6主控、WIFI图传、陀螺仪平衡、气压计/超声波定高、手机蓝牙控制等功能)

    前言 大四毕业后暑假没事做就花了一点DIY了一个四轴飞行器 xff0c 是比较大的那种F450机架 xff0c 不是那种PCB板做机架的小四轴 xff0c 因为我也是从零基础开始做的四轴 xff0c 现在就想把自己的过程写成博客分享在网上
  • shell教程

    shell 简介 Shell是一种脚本语言 xff0c 通常用于在Unix和类Unix操作系统上进行命令行交互 它是用户与操作系统内核之间的接口 xff0c 允许用户通过命令行或脚本文件来控制计算机上的操作 Shell程序通常用于执行复杂的
  • matlab画图常用函数image、imagesc、imshow区别

    1 image函数 从数组显示图像 xff0c 直接把矩阵中的值当作索引值 xff08 称为直接映射 xff09 xff0c 即数值1对应RGB1 xff0c 数值2对应于RGB2 xff0c 当小于1或大于64时表现为两端的颜色 语法1
  • 树莓派WiFi连接问题及网页打开问题的解决

    树莓派WiFi连接问题及网页打开问题的解决 一 问题描述 前一段时间在网上买了一个树莓派 4b计划做一个人脸识别的智能锁 xff0c 前一段时间整赶上期末考试 xff0c 挤时间做了做人脸识别以及人体红外感知模块 xff0c 大致能简单实现
  • C++11之正则表达式(regex_match、regex_search、regex_replace)

    在C 43 43 11中引入了正则表达式 字符规则 先来了解一下这个字符的含义吧 字符描述 转义字符 匹配字符行尾 匹配前面的子表达式任意多次 43 匹配前面的子表达式一次或多次 xff1f 匹配前面的子表达式零次或一次 m 匹配确定的m次
  • Java中Lambda表达式使用及详解

    Java中Lambda表达式使用及详解 前言 一 Lambda表达式的简介 Lambda表达式 xff08 闭包 xff09 xff1a java8的新特性 xff0c lambda运行将函数作为一个方法的参数 xff0c 也就是函数作为参
  • 栈的出栈次序及次序种类

    学过数据结构的程序猿应该都清楚 xff0c 栈是一种先入后出 xff0c 后入先出 xff08 LIFO xff09 的表 即插入和删除都只能在一个位置上进行 xff0c 即栈顶位置 对栈的基本操作有Push xff08 入栈 xff09
  • ANO匿名飞控时间片调度移植至普通STM32工程

    工程结构 时间片调度相关的代码位于SCHEDULER目录下的Scheduler和Task文件中 xff0c 匿名飞控原本的时钟由传感器输出的1ms脉冲实现的外部中断提供 xff0c 为使时间片调度算法可以用于一般的工程 xff0c 此处改为
  • for(let i in arr) for(let i of arr )与普通for循环的区别

    span class token keyword let span arr span class token operator 61 span span class token punctuation span span class tok
  • 执行webpack命令出错:无法识别webpack && Can‘t resolve ‘./src‘ in xxx

    一 webpack 无法将 webpack 项识别为 cmdlet 函数 脚本文件或可运行程序的名称 解决方案 xff1a 全局安装webpack 和webpack cli 命令 xff1a cnpm install webpack cli
  • 豆瓣API获取的图片不显示

    一 问题 xff1a 使用豆瓣API获取到的数据不能正常显示 二 解决方法 从控制台中查看图片的url地址发现 xff1a 同为一个网站提供的数据但是提供的url地址的域名却不同 这是不符合情理的 xff0c 因为为了使数据有规律 xff0
  • 使用 vue cli 的 vue serve命令单独运行.vue文件报错: Error: Cannot find module ‘@vue/compiler-sfc/package.json‘

    目录 一 问题 二 无需配置直接运行 vue文件 三 解决 1 详细错误 四 总结 一 问题 根据vue cli官方文档 https cli vuejs org zh guide prototyping html学习无需配置直接运行 vue
  • sass文件中使用深度选择器 /deep/不起作用

    目录 一 问题 二 原因 三 解决 使用deep深度选择器的基本步骤 四 总结 一 问题 1 想在当前的 vue文件中使用 deep 深度选择器修改第三库引入的组件或自定义组件的样式 xff0c 但是修改不成功 二 原因 1 自定义组件my
  • IconFont使用方式简介

    一 在线引入方式 1 iconfont中选择需要的图标 xff0c 加入购物车 图1 2 点击图1所示的购物车 xff0c 弹出如图2所示的弹框 依次点击 添加至项目 选择需要添加的项目 再点击确定 跳转到如图3所示的页面 图2 3 点击图
  • el-select下拉框没有数据

    目录 一 问题 二 问题详细描述 三 解决方法 四 总结 一 问题 1 突然发现给options赋值了 xff0c 但是下拉框没有数据 xff0c 就很奇怪 二 问题详细描述 1 直接用假数据 手动添加的数据 xff09 赋值给option