IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> element el-table 前端搜索 -> 正文阅读

[JavaScript知识库]element el-table 前端搜索

效果:

在这里插入图片描述
在这里插入图片描述

实现方式:

第一步:使用el-table,设置data

:data="tables"

第二步:在computed动态更新tables

computed: {
      // 前端过滤搜索
      tables: function () {
        var search = this.search;
        if (search) {
          search = search.toLowerCase(); //英文大写转小写
          let _this = this;
          return this.allList2.filter(function (dataNews) {
            return Object.keys(dataNews).some(function (key) {
              if (key == "name") { //只根据名称列搜索
                let name = String(dataNews[key]).toLowerCase(); //英文大写转小写,indexOf方法严格区分大小写
                if (name.indexOf(search) > -1) {
                  return true;
                } else {
                  return false;
                }
              } else {
                return false;
              }
            });
          });
        }
        return this.allList2;
      },
    },

全部代码:

<template>
  <!-- 设置用户 -->
  <div class="SetUser">
    <el-dialog title="设置用户" :visible.sync="visible1" width="35rem" center append-to-body>
      <el-input v-model="search" placeholder="搜索" style="margin-bottom:1rem;" maxlength="10" clearable></el-input>
      <el-table ref="multipleTable" :data="tables" class="info_participant" height="30rem" :row-key="getRowKeys"
        @select="handleSelect" @select-all="handleSelectAll">
        <el-table-column type="selection" :reserve-selection="true" width="55" :disabled="true" :max="5">
        </el-table-column>
        <el-table-column property="name" :label="$t('table.userName')" sortable align="center">
        </el-table-column>
      </el-table>
      <div slot="footer" style="display:flex; align-items:center;justify-content:center;">
        <el-button type="primary" @click="editConfirm">确定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
  export default {
    components: {},
    props: {
      visible: {
        type: Boolean,
        default: false,
      },
      msgList: {
        type: Array,
        default: [],
      },

      /* 
      visible  控制弹窗显示隐藏
      msgList  已选用户列表
      */
    },
    data() {
      return {
        msgList2: [], //已选用户列表
        visible1: true,
        // 获取row的key值
        getRowKeys(row) {
          return row.uid;
        },
        search:"",
        allList2:[],
      };
    },
     computed: {
      // 前端过滤搜索
      tables: function () {
        var search = this.search;
        if (search) {
          search = search.toLowerCase(); //英文大写转小写
          let _this = this;
          return this.allList2.filter(function (dataNews) {
            return Object.keys(dataNews).some(function (key) {
              if (key == "name") { //只根据名称列搜索
                let name = String(dataNews[key]).toLowerCase(); //英文大写转小写,indexOf方法严格区分大小写
                if (name.indexOf(search) > -1) {
                  return true;
                } else {
                  return false;
                }
              } else {
                return false;
              }
            });
          });
        }
        return this.allList2;
      },
    },
    mounted() {
      this.initPage();
    },
    methods: {
      initPage() {
        this.allList2 = [
          {
            name:"张三",
            uid:1,
          },
          {
            name:"张二",
            uid:2,
          },
          {
            name:"李四",
            uid:3,
          },
          {
            name:"zhangsan",
            uid:4,
          },
          {
            name:"zhang",
            uid:5,
          },
        ]
      },
      // 人员单选
      handleSelect(selection, row) {
        this.msgList2 = selection;
      },
      // 人员多选
      handleSelectAll(rows) {
        this.msgList2 = rows;
      },
    },
    beforeDestroy() {},
    watch: {
      msgList() {
        this.initPage();
      },
    },
  };
</script>

<style lang="scss" scoped>
  @import "./index.scss";
</style>

如果是前端分页的话,可以这么写:

 :data="tables.slice((currentPage-1)*pageSize,currentPage*pageSize)"
computed: {
      // 前端过滤搜索
      tables: function () {
        var search = this.search;
        if (search) {
          search = search.toLowerCase(); //英文大写转小写
          let _this = this;
          _this.total = 0;  //下面要重设总条数
          return this.allList2.filter(function (dataNews) {
            return Object.keys(dataNews).some(function (key) {
              if (key == "name" || key == "fileName") { //只根据名称列搜索
                let name = String(dataNews[key]).toLowerCase(); //英文大写转小写,indexOf方法严格区分大小写
                if (name.indexOf(search) > -1) {
                  _this.total++;
                  return true;
                } else {
                  return false;
                }
              } else {
                return false;
              }
            });
          });
        }
        this.total = this.allList2.length;
        return this.allList2;
      },
    },

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:29:58  更:2022-02-22 20:31:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:23:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码