我是靠谱客的博主 秀丽小猫咪,这篇文章主要介绍elementTable 全局实现单击行触发checkbox,现在分享给大家,希望可以做个参考。

    后台项目里应该有个常见需求,单击行时选中该行的checkbox,查了下网上element的解决方法,大多数都是在组件上绑定rowclick事件来实现的,感觉太麻烦了

    试了一下覆写elementtable的事件,好像没啥问题  大家可以试一下

首先引入依赖

import Vue from 'vue';

import Element from 'element-ui';

// 添加props 用来判断是否click触发toggleRowSelection , 防止组件上自己自定义的rowclick事件和我们添加的事件冲突

Element.Table.props.clickSelect = {

    type: Boolean,

    default: true,

};

查看element源码,复制过来

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/** 覆写elementTable的mounted事件 给tablebody的rowclick事件加上判断 */ Element.Table.mounted = function () { /** element源码*/     this.bindEvents();     this.store.updateColumns();     this.doLayout();     this.resizeState = {         width: this.$el.offsetWidth,         height: this.$el.offsetHeight     };     // init filters     this.store.states.columns.forEach(column => {         if (column.filteredValue && column.filteredValue.length) {             this.store.commit('filterChange', {                 column,                 values: column.filteredValue,                 silent: true             });         }     });     this.$ready = true;     // 下面是我们加的 click 触发toggleRowSelection     if (this.clickSelect) {         /** 重写click事件  默认选中时触发checkbox事件 */         const children = this.$children;         for (const child of children) {             if (child.$options.name === 'ElTableBody') {                 child.handleClick = function (event, row) {                     this.store.commit('setCurrentRow', row);                     this.handleEvent(event, row, 'click');                     // 手动触发toggleRowSelection 并执行select方法                     this.$parent.toggleRowSelection(row, null, true);                 };             }         }     } }

这里还魔改了一下toggleRowSelection方法,原版之中该方法是不会触发checkbox的select事件的

复制代码
1
2
3
4
5
6
7
8
9
10
/**  * 切换列checkbox时触发select事件改为可配置  * @param {*} row 列  * @param {Boolean} selected 该值不填Boolean类型时, 切换checked状态  否则切换对应selected  * @param {Boolean} handleChange  是否触发selelct事件  */ Element.Table.methods.toggleRowSelection = function (row, selected, handleChange = false) {     this.store.toggleRowSelection(row, selected, handleChange);     this.store.updateAllSelected(); };

第一次尝试改,有问题大家帮忙看看。

最后

以上就是秀丽小猫咪最近收集整理的关于elementTable 全局实现单击行触发checkbox的全部内容,更多相关elementTable内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部