zoukankan      html  css  js  c++  java
  • vue-element实现外部独立全选

    vue+element实现table外部的全选按钮

    • 在项目中,我们可能会遇到在列表的外面有一个独立的全选按钮,接下来就描述一下具体的实现过程
    • 首先我们读element的文档可以知道,el-table上是自带toggleAllSelectionclearSelection这两个方法的
      • 一个是用于多选表格,切换所有行的选中状态
      • 一个是清空用户的所有选择
    • 所以就可以通过ref链的形式,在点击外部的独立按钮的时候,触发相应的方法来实现列表全选与否。
    • 我们可以知道,el-checkbox上有一个change事件,是自带一个参数的,选中为true,非选中为false,此时不难想到,可以利用这个参数作为一个表示,来调用el-table上的那两个方法
    // 点击独立全选按钮时,方法中做的事情
    selectBottom ? this.$refs.multipleTable.toggleAllSelection() : this.$refs.multipleTable.clearSelection()
    
    • 此时我们会发现,虽然实现了点击独立按钮来控制列表全选与否,但是这个独立的按钮样式却不会发生变化,这是为什么呢
    • 读文档,第一想到的是利用一个标识来控制checked的true和false,来实现全选的样式改变(不过这样不行,也不清楚为啥)
    • 最后是可以通过改变el-checkbox的绑定值——value来实现控制样式
    • 此时我们会发现,已经可以发生样式的改变了,但是通过点击el-table中自带的全选和每列项,并不会改变外部按钮的状态
    • 这个时候可以通过el-table上的事件来完成了
      • select——当用户手动勾选数据行的 Checkbox 时触发的事件
      • select-all——当用户手动勾选全选 Checkbox 时触发的事件
    • 这两个方法可以拿到一个参数,这个参数里放的就是列表中所有的数据,可以通过判断参数的length是否等于所有数据的length来控制el-checkbox的value,来实现列表中的选中和外部独立选中的关联。

    这时候,我们利用element来实现一个外部独立的全选列表按钮就完成了

    <el-table
        ref="multipleTable"
        v-loading="listLoading"
        :data="dataList"
        @select-all="selectTop"
        @select="selectTop"
    ></el-table>
    <el-checkbox
        :value="select"
        label="全选"
        name="type"
        @change="toggleSelection"
    />
    
    // 点击列表选中
    selectList(selection) {
      this.select = selection.length === this.dataList.length
    },
    // 独立全选
    toggleSelection(selectBottom) {
      selectBottom ? this.$refs.multipleTable.toggleAllSelection() : this.$refs.multipleTable.clearSelection()
      this.select = selectBottom
    },
    

    如果有出入的地方,欢迎指出,立马改正,有想一起学习前端的小伙伴,欢迎加QQ1356770685

  • 相关阅读:
    IDEA中Git实战
    高并发下redis缓存穿透问题解决方案
    springboot整合mybatis+generator
    Github修改项目显示的语言类型
    Github中README.md换行
    maven中可以直接引用的java系统属性和环境变量属性
    springboot启动异常java.lang.NoSuchFieldError: DEFAULT_INCOMPATIBLE_IMPROVEMENTS
    java获取Linux持续运行时间及友好显示
    http工具类
    idHTTP最简洁的修改和取得Cookie例子
  • 原文地址:https://www.cnblogs.com/Huskie-/p/13885093.html
Copyright © 2011-2022 走看看