element-ui 下拉菜单 el-dropdown-menu 组件 不能动态渲染数据怎么解决?

2023-11-17

关于element-ui 下拉菜单 el-dropdown-menu 组件 不能动态渲染 数据怎么解决?

element-ui 官网中的例子是这样写的

<el-dropdown>
  <span class="el-dropdown-link">
    下拉菜单<i class="el-icon-arrow-down el-icon--right"></i>
  </span>
  <el-dropdown-menu slot="dropdown">
    <el-dropdown-item>黄金糕</el-dropdown-item>
    <el-dropdown-item>狮子头</el-dropdown-item>
    <el-dropdown-item>螺蛳粉</el-dropdown-item>
    <el-dropdown-item disabled>双皮奶</el-dropdown-item>
    <el-dropdown-item divided>蚵仔煎</el-dropdown-item>
  </el-dropdown-menu>
</el-dropdown>

<style>
  .el-dropdown-link {
    cursor: pointer;
    color: #409EFF;
  }
  .el-icon-arrow-down {
    font-size: 12px;
  }
</style>

写法一

我一开始是这样写的,循环的是整个 el-dropdown-item 组件,
v-for语句写在了el-dropdown-menu 里,发现页面上只能渲染出列表中最后一个元素。
说明这种写法不能动态渲染数据

 <template>
<div>
    <el-dropdown trigger="click" >
          <span class="el-dropdown-link" ref="ellink" >
            {{ test_obj.title }}<i class="el-icon-arrow-down el-icon--right" />
          </span>
          <el-dropdown-menu slot="dropdown" align="center" v-for="item in test_obj.arr" :key="item.id">
            <el-dropdown-item   > 
              {{ item.desc }}
            </el-dropdown-item>
          </el-dropdown-menu>
        </el-dropdown>
</div>
</template>
<script>
export default {
    name:'test',
    data(){
        return {
            test_obj:{
                title:'测试下拉菜单',
                arr:[
                    {id:1,desc:'测试1'},
                    {id:2,desc:'测试2'},
                    {id:3,desc:'测试3'}
                ]
            }
            
        }
    }
}
</script>

结果只显示列表中最后一个数据
在这里插入图片描述

写法二
换成以下写法,直接在 el-dropdown-item 组件里写v-for语句,发现可以动态渲染,满足我项目中的需求

 <el-dropdown trigger="click" ref="eldrop">
          <span class="el-dropdown-link" ref="ellink" >
            {{ Global.default_department.name }}<i class="el-icon-arrow-down el-icon--right" />
          </span>
  <el-dropdown-menu slot="dropdown" align="center" >
    <el-dropdown-item v-for="department in Global.departments" @click.native="getDepartment(department)" :key="department.id"> 
      {{ department.name }}
    </el-dropdown-item>
  </el-dropdown-menu>
</el-dropdown>

在这里插入图片描述

查看了下两种写法渲染后的真实html内容如下

写法一的,只渲染最后一组的html
    <ul class="el-dropdown-menu el-popper" align="center" id="dropdown-menu-3569" style="transform-origin: center top; z-index: 2011; position: absolute; top: 27px; left: 672px;" x-placement="bottom-end">
        <li tabindex="-1" class="el-dropdown-menu__item">
            测试1
        </li>
        <div x-arrow="" class="popper__arrow" style="left: 19px;"></div>
    </ul>
    <ul class="el-dropdown-menu el-popper" align="center" id="dropdown-menu-3569" style="transform-origin: center top; z-index: 2012; position: absolute; top: 27px; left: 672px;" x-placement="bottom-end">
        <li tabindex="-1" class="el-dropdown-menu__item"> 
                    测试2
        </li>
        <div x-arrow="" class="popper__arrow" style="left: 19px;"></div>
    </ul>
    <ul class="el-dropdown-menu el-popper" align="center" id="dropdown-menu-3569" style="transform-origin: center top; z-index: 2013; position: absolute; top: 27px; left: 672px;" x-placement="bottom-end">
        <li tabindex="-1" class="el-dropdown-menu__item">
            测试3
        </li>
        <div x-arrow="" class="popper__arrow" style="left: 19px;"></div>
    </ul>
写法二的,正常渲染了的html
    <ul class="el-dropdown-menu el-popper" align="center" id="dropdown-menu-3203" style="position: absolute; top: 27px; left: 809px;      transform-origin: center top; z-index: 2007;" x-placement="bottom-end">
        <li tabindex="-1" class="el-dropdown-menu__item">
            测试A
        </li>
        <li tabindex="-1" class="el-dropdown-menu__item">
            测试B
        </li>
        <li tabindex="-1" class="el-dropdown-menu__item">
            测试C
        </li>
        <div x-arrow="" class="popper__arrow" style="left: 8px;"></div>
    </ul>

可以得出,写法二其实也渲染了三个li元素,但是位置重合了,根据z-index大小,只显示最后一个数据。
所以写下拉菜单时,只循环el-dropdown-item组件中的内容就可以正常动态渲染数据。

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

element-ui 下拉菜单 el-dropdown-menu 组件 不能动态渲染数据怎么解决? 的相关文章

随机推荐

  • html移动端适配最优方法

    使用js来设置font size的方法最好 目前大部分成熟网站都采用这种方法 媒体查询可能会漏掉一些设备型号 并且比较繁琐 通过vw设置也比较方便 但是兼容性不好 js设置html的font size大小 document document
  • OpenSSL SSL_read: Connection was aborted, , errno 10053

    git遇到fatal unable to access https github com xxx xxx OpenSSL SSL read Connection was aborted errno 10053的问题 原因 Git默认限制推送
  • the desired address is beyond limit for this PLC

    问题描述 通过 Java连接西门子PLC S7 1200 学习中 出现错误 the desired address is beyond limit for this PLC 下面是测试代码 S7Connector connector S7C
  • zookeeper基本架构

    要全面了解zookeeper 首先我们得知道什么是zookeeper 能做什么 zookeeper是一个开源的分布式协调服务 主要用于数据订阅 发布 集群管理 配置管理 分布式锁 基本架构 zookeeper基本架构如下 zookeeper
  • angular input_可视化的 Angular 响应式编程

    现代化UI开发中 客户端 前端 一般会进行分层设计 实际用户可感知的 UI 作为顶层 称为视图 View 底层中独立于展示方式的数据结构称为模型 Model 而将两者进行关联的中间层部分 根据划分方式则有很多种定义 例如控制器 Contro
  • thinkPHP6.0入门笔记(五)——数据表字段排序

    thinkPHP6 0实现数据表字段排序 1 利用order方法简单实现 2 URL优化排序 1 利用order方法简单实现 一般情况下排序是交给前端来实现的 后端一般主要是实现数据库的增删查改 但是PHP中经常出现order字段 由于后端
  • cuBLAS【CUDA专门用来解决线性代数运算的库】

    cuBLAS是CUDA专门用来解决线性代数运算的库 分为三个级别 Lev1向量乘向量 Lev2矩阵乘向量 Lev3矩阵乘矩阵 此外 cuBLAS库还包含一些功能和状态结构函数 学习网站为 参考资料 四 cuBLAS与cuDNN
  • mysql 快照和binlog_mysql binlog二进制日志详解

    mysql binlog二进制日志详解 更新时间 2011年10月31日 23 13 00 作者 二进制日志包含了所有更新了数据或者已经潜在更新了数据 例如 没有匹配任何行的一个DELETE 的所有语句 基本概念 定义 二进制日志包含了所有
  • Tcl脚本学习

    包的创建和调用 在tcl脚本中 我们可以通过创建和调用包来增强代码的可复用性 创建包的步骤 1 在包脚本文件中 首先声明 package provide 标识当前文件提供了一个包 之后在该文件中完成包的内容 2 通过pkg mkIndex命
  • element table 表格实现上移、下移

    业务场景 有时候需要前端实现上移和下移功能 代码如下 根据交互形式 我这里是把第一条数据的上移按钮置灰不可点击 disabled scope index 0 最后一条数据下移按钮置灰不可点击 disabled scope index 1 t
  • DCDC输入输出电容的选择和计算(转载)

    文章转自MPS论坛 https forum monolithicpower cn t topic 2105 目前市面上的电容种类繁多 在为我们的电源电路选择输入输出电容的时候难免会挑花了眼 本文就来浅析一下如何选择输入输出电容及其相关的计算
  • 企业运维经典面试题汇总(5)

    1 git和svn 的区别 Git是分布式的 而Svn不是分布的 Git把内容按元数据方式存储 而SVN是按文件 Git没有一个全局版本号 而SVN有 目前为止这是跟SVN相比Git缺少的最大的一个特征 Git的内容的完整性要优于SVN G
  • Qt-窗口嵌套exe

    某些特殊场景 我们要在主程序中嵌套第三方程序 这样臃肿的设计好比 在乡村小楼里面建设一个商业广场 本人不是很喜欢 Qt的QProcess和QWindow可以为我们完成这样的任务 核心思路即 QProcess启动第三方exe 获取进程ID w
  • 各种窗体操作的bug解决

    1 java lang IllegalArgumentException View com android internal policy impl PhoneWindow DecorView 41e0f220 V E R D 0 0 53
  • TensorFlow 2.0 安装指南

    TensorFlow 2 0 beta1 已经发布 本文详细介绍在个人电脑或服务器上安装 TensorFlow 2 0 beta1 的步骤和各种细节 让你第一次安装 TensorFlow 2 0 就上手 一般安装步骤 TensorFlow
  • RangeError: Maximum call stack size exceeded

    问题现场 执行环境 安卓设备 V8 引擎 Java 代码中调用 JavaScript 报错日志 2021 10 21 14 52 53 156 30457 30457 com fuck you E com fuck you JavaInvo
  • ‘vite’ 不是内部或外部命令,也不是可运行的程序或批处理文件问题解决

    问题解析 使用vite创建vue3 0项目的时候 vite不会自动 install 相关的依赖 需要我们手动去安装 进入项目的node modules目录里面查看 什么都没有 所以说出现这个问题的原因是 缺少安装依赖这一步 vite不像 n
  • 卷积神经网络之计算机视觉应用(一)

    卷积神经网络之计算机视觉应用 一 一 引言 21世纪开始 卷积神经网络就被成功的大量用于检测 分割 物体识别以及图像的各个领域 值得一提的是 图像可以在像素级别进行打标签 这样就可以应用在比如自动电话接听机器人 自动驾驶汽车等技术中 尽管卷
  • 宝元系统u盘使用说明_联想小新Air14使用U盘重装win7系统图解

    联想小新Air14是一款适合年轻人使用的笔记本 高大上的颜值符合现在阶段的年轻用户的审美要求 拥有很高的屏占比 还配置了一个酷酷的按压式指纹识别功能 得到了很多用户的喜爱 开机速度超快 运行流畅 能让用户感受不一样的使用体验 这款笔记本预装
  • element-ui 下拉菜单 el-dropdown-menu 组件 不能动态渲染数据怎么解决?

    关于element ui 下拉菜单 el dropdown menu 组件 不能动态渲染 数据怎么解决 element ui 官网中的例子是这样写的