使用ElementUI写一个前端分页查询的实例

 更新时间:2022年02月18日 09:52:57   作者:强风吹拂丶  
本文主要介绍了使用ElementUI写一个前端分页查询的实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

一般我们在做项目的时候,都是通过调用后台接口去做增删改查,但是也有例外,有些某些特定场景下,会让前端去做好增删改查. 那么我们今天就来做一下这个需求. 使用的框架是Vue,UI框架是使用率很高的ElementUI. 那么我们开干吧。

前端分页

假定我们的数据是通过点击一个添加按钮,弹出一个添加弹窗,输入好数据后,点击确定按钮,把数据保存到表格中去. 那么就是这样的

{
    data () {
        return {
            page: {
                pageOffset: 1, // 分页页码, 默认第一页
                pageCount: 20, // 一页的页数, 默认20
            },
            allData: [], // 表格所有数据的数据源
            tableData: [] // 表格数据源
        }
    },
    methods: {
        // 添加按钮,弹窗一系列操作后,点击确定保存数据,调用的方法
        saveData (data) {
            if (!data) return
            this.allData.push(data)
            this.paging()
        },
        // 点击第一页,第二页的监听方法
        pageChange (pageOffset) {
          this.page.pageOffset = pageOffset
          this.paging()
        },
        // 分页方法
        paging () {
            const pageOffset = this.page.pageOffset // 页码
            const pageCount = this.page.pageCount // 一页显示多少个数据
            this.tableData = this.allData.slice((pageOffset - 1) * pageCount, pageOffset * pageCount)
        }
    }
}

具体代码差不多就是这样啦,其实是很简单,但是有的时候,可能也会没有思路。下面来总结一下前端分页的几个点:

  • 需要两个变量,一个存储的是总的数据,一个存储的是我们页面需要展示的分页数据
  • 然后就是根据页码和一页展示的页数通过slice方法去得到

查询

假如在前端分页的内容下,需求再让加上一个查询条件,去过滤数据,并且需要根据多条件过滤,那么怎么办呢? 我们可以写一个这样的方法:

// 查询数据
// val:  输入框查询的值
// data: 查询的数据源
// fuzzySearch: 是否是模糊查询
function search (key, val, data, fuzzySearch = false) {
      const searchTxt = val.trim()
      if (searchTxt === '') {
        return data
      }
      // 如果以空格隔开的话,则表示可以多值过滤
      if (searchTxt && ~searchTxt.indexOf(' ')) {
        let searchTxtArr = searchTextToArr(searchTxt)
        return data.filter((o) => {
          return ~searchTxtArr.indexOf(o[key])
        })
      } else {
        // 单值过滤
        return data.filter((o) => {
          // 是否是模糊查询
          return fuzzySearch ? ~o[key].indexOf(searchTxt) : searchTxt === o[key]
        })
      }
}
// 把多选查询条件变成数组
function searchTextToArr (str) {
    let text = str.trim()
    // 过滤掉多余的空格, 比如 '男  女' 中间多输入了一个空格的情况.
    return text.split(' ').filter((o) => {
        return o === '0' || o
    })
}
// 数据
const data = [
    {name: 'james', sex: '男'},
    {name: 'nancy', sex: '女'},
    {name: 'bob', sex: '男'},
    {name: 'allen', sex: '男'},
    {name: 'jack', sex: '男'},
    {name: 'jasmine', sex: '女'},
]
// 测试
search('name', 'jack   jasmine', data) // [{"name":"jack","sex":"男"},{"name":"jasmine","sex":"女"}]
search('name', ' allen ', data) // [{"name":"allen","sex":"男"}]
search('name', 'j', data, true) // [{"name":"james","sex":"男"},{"name":"jack","sex":"男"},{"name":"jasmine","sex":"女"}]

以上代码实现了模糊查询、多值查询、单值精确查询。 主要就是利用indexOffilter去做过滤和判断. 另外还去做了一些用户的误操作的时候的兼容,让用户在不完全符合输入条件的时候,也能找到想要的数据。增强用户体验. 代码的话,里边写了注释,很容易懂。 如果有不懂的地方的话,可以留言跟我说一下,大家交流一下.

写在最后

今天主要分享用ElementUI写一个前端分页,然后搜索的话,怎么实现模糊查询、精确查询以及多值查询的功能。 内容比较朴素啦。 但是还是比较偏实用的。

到此这篇关于使用ElementUI写一个前端分页查询的实例的文章就介绍到这了,更多相关Element 分页查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于vue.js中实现方法内某些代码延时执行

    关于vue.js中实现方法内某些代码延时执行

    今天小编就为大家分享一篇关于vue.js中实现方法内某些代码延时执行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue2.0项目实现路由跳转的方法详解

    vue2.0项目实现路由跳转的方法详解

    这篇文章主要介绍了vue2.0项目实现路由跳转的详细方法,非常不错,具有一定的参考借鉴借鉴价值,需要的朋友可以参考下
    2018-06-06
  • 八个一看就觉得很棒的Vue开发技巧分享

    八个一看就觉得很棒的Vue开发技巧分享

    在用Vue开发的这几年里,我学到了很多有用的技巧,所以这篇文章主要给大家分享介绍了八个一看就觉得很棒的Vue开发技巧,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 浅谈nuxtjs校验登录中间件和混入(mixin)

    浅谈nuxtjs校验登录中间件和混入(mixin)

    这篇文章主要介绍了浅谈nuxtjs校验登录中间件和混入(mixin),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Vant实现上传多个图片或视频,更改视频预览图

    Vant实现上传多个图片或视频,更改视频预览图

    这篇文章主要介绍了Vant实现上传多个图片或视频,更改视频预览图,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 使用Vue实现带拖动和播放功能的时间轴

    使用Vue实现带拖动和播放功能的时间轴

    这篇文章主要为大家详细介绍了如何使用Vue实现带拖动和播放功能的时间轴,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • Vue 使用beforeEach实现登录状态检查功能

    Vue 使用beforeEach实现登录状态检查功能

    今天小编就为大家分享一篇Vue 使用beforeEach实现登录状态检查功能,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 教你搭建按需加载的Vue组件库(小结)

    教你搭建按需加载的Vue组件库(小结)

    这篇文章主要介绍了教你搭建按需加载的Vue组件库(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Vue组件通信传递数据的三种方式

    Vue组件通信传递数据的三种方式

    这篇文章主要介绍了Vue组件通信传递数据的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-04-04
  • 如何用VUE和Canvas实现雷霆战机打字类小游戏

    如何用VUE和Canvas实现雷霆战机打字类小游戏

    这篇文章主要介绍了如何用VUE和Canvas实现雷霆战机打字类小游戏,麻雀虽小,五脏俱全,对游戏感兴趣的同学,可以参考下,研究里面的原理和实现方法
    2021-04-04

最新评论