vue+Material UI 带复选框表格获取选中值(索引)

  • 发现问题
  • 解决
  • 写在最后

发现问题

神坑UI框架–Material,这款框架我不晓得为什么会这么坑,有这么多的问题为什么会被推出来,真的是除了UI好看之外其余几乎全是鸡肋,比如我现在遇到的:Material自带的table 复选框问题,官方提供了带复选框的表格:

同时提供了一个事件方法以及一个属性:

这个方法@md-selected=“onSelect”,它是一个选中事件,当你选中复选框的时候会执行这个事件,但是!!!它有问题!!!它竟然是一个取消选中的时候触发的事件,excuse me???我要你取消选中事件干什么???我要你选中事件啊!而且它还有bug!它在第一次的时候不会执行,下面这张截图我截自Material的官方文档:

我一度陷入了无语的状态,面临着两个选择,第一个:不用Material提供的这个复选框功能,那意味着我要自定义表头,这无疑是一个很麻烦的选择,第二个:改造这个md-selected方法,在思考了1分29秒36之后,我决定选择第二种。

解决

我找了很久也没有找到能替代md-selected的方法——选中事件,后来在看官方提供的案例源码的时候我发现了一个这个方法:

这个方法在每次点击复选框的时候都会执行,它接收一个参数 count,这个count代表目前选中的复选框的个数,嗯???个数???我要个数干啥???你给我个索引也好啊!!我尝试更换为item参数,但是,undefined,虽然不是我想要的结果但是也算是有思路了,我在这个方法里继续写就行。
我的思路是这样:在这个方法里去获取哪一个复选框被选中了,我发现被选中的复选框会有一个叫做“md-selected”的类名,OJ8K,就他了,下面我们来改造(代码以官方案例为基础修改,我修改的核心代码已标记注释,请注意查看):

<template><div class="memberList"><md-table v-model="people" md-card @md-selected="onSelect"><md-table-toolbar><h1 class="md-title">With auto select and alternate headers</h1></md-table-toolbar><md-table-toolbar slot="md-table-alternate-header" slot-scope="{ count }"><div class="md-toolbar-section-start">{{ getAlternateLabel(count) }}</div><div class="md-toolbar-section-end"><md-button class="md-icon-button"><md-icon>delete</md-icon></md-button></div></md-table-toolbar><md-table-row slot="md-table-row" slot-scope="{ item }" :md-disabled="item.name.includes('Stave')" md-selectable="multiple" md-auto-select><md-table-cell md-label="Name" md-sort-by="name">{{ item.name }}</md-table-cell><md-table-cell md-label="Email" md-sort-by="email">{{ item.email }}</md-table-cell><md-table-cell md-label="Gender" md-sort-by="gender">{{ item.gender }}</md-table-cell><md-table-cell md-label="Job Title" md-sort-by="title">{{ item.title }}</md-table-cell></md-table-row></md-table><p>Selected:</p>{{ selected }}</div>
</template><script>export default {name: 'TableMultiple',data: () => ({selected: [],people: [{name: 'Shawna Dubbin',email: 'sdubbin0@geocities.com',gender: 'Male',title: 'Assistant Media Planner'},{name: 'Odette Demageard',email: 'odemageard1@spotify.com',gender: 'Female',title: 'Account Coordinator'},{name: 'Lonnie Izkovitz',email: 'lizkovitz3@youtu.be',gender: 'Female',title: 'Operator'},{name: 'Thatcher Stave',email: 'tstave4@reference.com',gender: 'Male',title: 'Software Test Engineer III'},{name: 'Clarinda Marieton',email: 'cmarietonh@theatlantic.com',gender: 'Female',title: 'Paralegal'}]}),methods: {//此处为我修改之后的代码-----------------------onSelect(items) {items.length == 0 ? this.selected = [] : "";items.length == 0 ? console.log(this.selected) : "";},getAlternateLabel (count) {setTimeout(function () {const memberListDom = document.getElementsByClassName("memberList")[0];let selectDomArr = memberListDom.getElementsByClassName("md-table-row");let selectArr = [];for (var i = 0; i < selectDomArr.length; i++) {selectDomArr[i].className.indexOf("md-selected") > -1 ? selectArr.push(i) : "";}this.selected = selectArr;console.log(this.selected);},100);},}}
</script><style lang="scss" scoped>.md-table + .md-table {margin-top: 16px}
</style>

下面我们来看下效果:

OK,完事

写在最后

在使用Material的过程中我的头发都快让我薅完了,这款插件真的。。emmmm。。。哎。。。一言难尽。
希望这篇文档能给您带来帮助,感谢阅读。

Material UI 带复选框表格获取选中值(索引)相关推荐

  1. Jq 复选框 全选,全不选,监听复选框,获取选中值

    function checkAll() {//全选全不选let xieyi=$("#dataTypeAll");if(!xieyi.is(':checked')){$(" ...

  2. C#ListView控件添加Checkbox复选框并获取选中的数目,检查checkbox是否勾选

    [转载]原地址:http://blog.csdn.net/lucky51222/article/details/41892429 具体方法 1.添加复选框 并且如下设置 listView1.Check ...

  3. C#ListView控件添加复选框并获取选中的数目

    1.添加复选框:listView1.CheckBoxes = true; 2.选中listview并获取选中的数目: private void listView1_ItemChecked(object ...

  4. MVC根据CheckBox的Value值选中对应的复选框及获取选中的Value值

    View视图代码 @using (Html.BeginForm("H", "Default1"))//Default1控制器    H是方法 { //循环添加5 ...

  5. element表格实现树形全选_vue+element UI实现树形表格带复选框的示例代码

    一:在component文件夹下新建如下treeTable文件夹,里面有2个文件: eval.js:将数据转换成树形数据 /** * @Author: jianglei * @Date: 2017-1 ...

  6. button layui 点击事件_Layui 带多选框表格监听事件以及按钮自动点击写法实例

    不话不多说了,直接上代码吧: 获取选中行数据 获取选中数目 验证是否全选 提交选择 id运动名运动时长运动类型 var msg=""; var idlist="" ...

  7. html 复选框 mysql_Html:实现带复选框的下拉框(一)

    概述 项目中要用到可多选的下拉框(select),发现HTML中无此控件,故手动模拟实现一下. 模拟所用元素:input,ul,li 代码 模拟实现带复选框的下拉列表 body{ margin: 20 ...

  8. jquery复选框组清空选中的值_jQuery获取复选框被选中数量及判断选择值的方法详解...

    这篇文章主要介绍了jQuery获取复选框被选中数量及判断选择值的方法,结合实例形式分析了jQuery操作复选框进行判定与统计的相关技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了jQuer ...

  9. 雷林鹏分享:jQuery EasyUI 树形菜单 - 创建带复选框的树形菜单

    jQuery EasyUI 树形菜单 - 创建带复选框的树形菜单 easyui 的树(Tree)插件允许您创建一个复选框树.如果您点击一个节点的复选框,这个点击的节点信息将向上和向下继承.例如:点击 ...

最新文章

  1. 化繁为简,一张图看懂梯度、散度、旋度、Jacobian、Hessian和Laplacian
  2. 高中生也能读懂的Docker入门教程
  3. CV进入三维时代!Facebook在ICCV 2021 发布两个3D模型,自监督才是终极答案?
  4. python文件压缩
  5. python requests的安装与简单运用
  6. Effective Java之保护性编写readObject方法(七十六)
  7. java.util.concurrent包
  8. SQL Case When Then
  9. 自然语言处理实践Task2
  10. mysql服务器守护程序_MySQL主从服务器的守护进程监视
  11. MS Sql Server 数据库或表修复(DBCC CHECKDB)
  12. 重磅!贾扬清明日发布新一代云原生数仓与数据湖产品 | 凌云时刻
  13. Kmplayer的各种功能设置
  14. NYOJ 234 吃土豆(基础dp)
  15. route 不同路由器 windows_如何检查路由器WiFi信号的好坏?
  16. 编写一个函数int isPrime(int x),当x是素数时,返回1,否则返回0; 在main函数中,输入一个正整数,如果是素数输出Y,否则输出N。
  17. 【转载】何时使用领域驱动设计
  18. 二叉树前、中、后序线索化及遍历
  19. JavaScript 课后习题答案
  20. 3种有效的小米手机数据恢复方法

热门文章

  1. 设计算机字长为8位 采用纯整数,计算机一级B笔试真题2011年03月
  2. 讯飞智能录音笔SR502:支持OCR识别功能的职场礼物
  3. 美元汇率【贪心算法练习题】
  4. 【玩转c++】多态深度刨析
  5. fatal remote does not appear to be a git repository
  6. 跳高女神oracle,她是跳高新星,颜值与实力并存,现被称为“最美跳高女神”!...
  7. 笔记本电脑接通网线联网
  8. PMP-PMBOK-培训(7)Initiating a Project and Preparing the Project Plan
  9. 微信公众号--php
  10. 常用计算机字体的后缀名是,自考计算机应用基础试题及参考答案