耀极客论坛

 找回密码
 立即注册
查看: 489|回复: 0

ElementUI中的el-dropdown传入多参数的实现方法

[复制链接]

193

主题

176

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2022-5-9 01:46:29 | 显示全部楼层 |阅读模式
  本文主要介绍了ElementUI中的el-dropdown传入多参数的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  最近工作中因为业务中按钮的增多,导致页面排版按钮过多,页面不够美观,用户体验不佳,于是想到利用el-dropdown做一个下拉按钮(把多个按钮整合到了一起,下拉实现)



  但是ElementUi官方文档中的handleCommand方法只允许接入一个参数,这个参数用于触发你选择的是哪一个选项。而我们实际中还需要传入一个当前行数(如果和我一样,也是用table显示数据的话)的对象进去,后面要使用这个对象的某些字段传给后台进行一些增删改查的操作。
  ElementUi官方文档中el-dropdown的样例如下:
el-dropdown 官方文档
  1. ‹el-dropdown @command="handleCommand">
  2.   ‹span class="el-dropdown-link">
  3.     下拉菜单‹i class="el-icon-arrow-down el-icon--right">‹/i>
  4.   ‹/span>
  5.   ‹el-dropdown-menu slot="dropdown">
  6.     ‹el-dropdown-item command="a">黄金糕‹/el-dropdown-item>
  7.     ‹el-dropdown-item command="b">狮子头‹/el-dropdown-item>
  8.     ‹el-dropdown-item command="c">螺蛳粉‹/el-dropdown-item>
  9.     ‹el-dropdown-item command="d" disabled>双皮奶‹/el-dropdown-item>
  10.     ‹el-dropdown-item command="e" divided>蚵仔煎‹/el-dropdown-item>
  11.   ‹/el-dropdown-menu>
  12. ‹/el-dropdown>
  13. ‹style>
  14.   .el-dropdown-link {
  15.     cursor: pointer;
  16.     color: #409EFF;
  17.   }
  18.   .el-icon-arrow-down {
  19.     font-size: 12px;
  20.   }
  21. ‹/style>
  22. ‹script>
  23.   export default {
  24.     methods: {
  25.       handleCommand(command) {
  26.         this.$message('click on item ' + command);
  27.       }
  28.     }
  29.   }
  30. ‹/script>
复制代码
  我们必须在执行handleCommand方法之前,对这个command参数进行重新封装成一个对象,使其内部包含我们想要的数据方便后面调用。
  代码如下:
  1. ‹el-table-column label="操作1">
  2.     ‹template slot-scope="scope">
  3.         ‹el-dropdown split-button type="primary" @command="handleCommand">
  4.             其他操作
  5.             ‹el-dropdown-menu slot="dropdown" >
  6.                 ‹el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'a')">废弃‹/el-dropdown-item>
  7.                 ‹el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'b')">上传原件‹/el-dropdown-item>
  8.                 ‹el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'c')">原件整理‹/el-dropdown-item>
  9.                 ‹el-dropdown-item disabled :command="beforeHandleCommand(scope.$index, scope.row,'d')">冻结‹/el-dropdown-item>
  10.                 ‹el-dropdown-item disabled :command="beforeHandleCommand(scope.$index, scope.row,'e')">解冻‹/el-dropdown-item>
  11.             ‹/el-dropdown-menu>
  12.         ‹/el-dropdown>
  13.     ‹/template>
  14. ‹/el-table-column>
复制代码
  因为我们是写在表格里的,所以需要一个插槽,具体的根据实际情况进行修改。给标签的command属性绑定一个方法,这个方法就可以传入我们想要的参数,然后利用这个方法封装成一个对象,再将这个对象传入handleCommand方法。
  1. ‹script>
  2. export default {
  3.     methods: {
  4.         handleAbandon(index, row) {
  5.            //todo
  6.         },
  7.         handleUpload (index, row) {
  8.             //todo
  9.         },
  10.         handleSettle(index, row){
  11.            //todo   
  12.         },
  13.         beforeHandleCommand(index, row,command){
  14.             return {
  15.                 'index': index,
  16.                 'row': row,
  17.                 'command':command
  18.             }
  19.         },
  20.         handleCommand(command) {
  21.             switch (command.command) {
  22.                 case "a"://废弃
  23.                     this.handleAbandon(command.index,command.row);
  24.                     break;
  25.                 case "b"://上传原件
  26.                     this.handleUpload (command.index,command.row);
  27.                     break;
  28.                 case "c"://原件整理                    
  29.                 this.handleSettle(command.index,command.row);
  30.                     break;
  31.             }
  32.         }
  33.     },
  34. }
  35. ‹/script>
复制代码
  到此这篇关于ElementUI中的el-dropdown传入多参数的实现方法的文章就介绍到这了,更多相关ElementUI中el-dropdown传入多参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|耀极客论坛 ( 粤ICP备2022052845号-2 )|网站地图

GMT+8, 2022-11-28 19:08 , Processed in 0.077028 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表