Vue的mixin的一点使用(table的头部sticky的实现)

摘要:
你应该熟悉mixin。它可以在全局或配置中向mixin的组件添加公共属性和方法。这里有一个具体的用途。当使用元素ui时,当表太长而无法滚动时,头部会滚出视图,不可能知道下面内容的每一列代表什么。这里的实现方案是stick,即展开视图并将列表的头部固定在顶部。

大家对mixin应该熟悉,它能全局或者配置mixin的组件添加公共属性与方法。这里展示一次具体的使用。

在使用element-ui时(别的场景一样出现),table过长时滚动时,头部滚出视图了,就无法知道下面内容每一列代表啥。这里的实现方案采用sticky即可,即滚出视图让列表的头部固定在顶部。

这里采用mixin来实现,需要的页面配置mixin即可,代码如下

// 引入计算偏移的方法和节流方法
import OffsetManage from '@flyme/utils/lib/domUtils/OffsetManage'
import throttle from '@flyme/utils/lib/helper/throttle'
 
 
const tableHeaderFixMixin = {
  mounted() {
    // SPA页面使用了vue-router
    this.routerViewEl = document.querySelector('.main-router-view')
    if (this.routerViewEl) {
      // 节流
      this.scrollFn = throttle(() => {
        // 滚出添加fixed样式,否则去除
        if (this.tableHeader) {
          const top = parseInt(this.tableHeader.dataset.top)
          if (this.routerViewEl.scrollTop > top) {
            this.tableHeader.classList.add('fixed-table-header')
            this.tableHeader.style.width = this.tableHeader.parentNode.offsetWidth + 'px'
          } else {
            this.tableHeader.classList.remove('fixed-table-header')
            this.tableHeader.style.width = '100%'
          }
        }
      }, 90)
      this.routerViewEl.addEventListener('scroll', this.scrollFn)
      this.$nextTick(() => {
        this.initStickyTableHeader()
      })
    }
 
  },
 
  beforeDestroy() {
    // 记得销毁
    this.routerViewEl.removeEventListener('scroll', this.scrollFn)
  },
 
  methods: {
    // 初始化datatable的header的sticky
    initStickyTableHeader() {
      this.tableHeader = document.querySelector('.el-table__header-wrapper')
      if (this.tableHeader) {
        this.tableHeader.dataset.top = OffsetManage.top(this.tableHeader)
      }
    },
  },
}
 
export { tableHeaderFixMixin 

具体使用

import { tableHeaderFixMixin } from '../mixins'
 
export default {
  ...
  mixins: [tableHeaderFixMixin],
  ...

转载于:https://juejin.im/post/5b97a43bf265da0ac9628639

免责声明:文章转载自《Vue的mixin的一点使用(table的头部sticky的实现)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mybatisplus使用logstash 过滤filter下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

rootkit:实现隐藏进程

实现隐藏进程一般有两个方法: 1,把要隐藏的进程PID设置为0,因为系统默认是不显示PID为0的进程。 2,修改系统调用sys_getdents()。 Linux系统中用来查询文件信息的系统调用是sys_getdents,这一点可以通过strace来观察到,例如strace ls 将列出命令ls用到的系统调用,从中可以发现ls是通过getdents系统调用...

Vue根据浏览器窗体变化动态设置Element Table组件的最大高度

Vue根据浏览器窗体变化动态设置Element Table组件的最大高度 这个场景应该经常遇到,比如说在一个页面有一个table,想让他数据过多的时候自动出现滚动条而不至于冲到屏幕外被隐藏,如果表格下面还有换页的话,换页直接冲没了,所以需要计算这个table表格的最大高度。 使用的是饿了吗Element组件库的table组件,有一个属性是 max-heig...

vue 手指长按触发事件

按钮 <span @touchstart="gtouchstart()" @touchmove="gtouchmove()" @touchend="gtouchend()">按住说话</span> data数据定义一个定时器 timeOutEvent:0,//定时器 方法         gtouchstart(){...

HBase ProcedureV2 分析

Procedure V2, 是hbase1.1版本引入的一套fault-tolerant的执行multi-steps-job的框架, 目前主要用在Master中, 比如创建表,删除表等操作 新旧比较 下面比较0.94版本和1.25版本下的建表流程 0.94 0.94版本中,创建表是通过HBaseAdmin类,向Master发起一个异步的建表请求,然后不断的...

移植Kdump至嵌入式ARM64环境【转】

转自:https://blog.csdn.net/lsy673908720/article/details/90215501 工欲善其事,必先利其器。操作系统崩溃是高级Linux运维工程师很头疼的事情,但也不要害怕,前辈们已经给我们磨了好多把刀,其中有一把叫做Kdump。目前在主流的Linux发行版如Ubuntu、Centos等已经默认安装或者仓库中含有工...

vue项目中,不需前端编译打包,随时修改维护数据

项目中遇到一个需求,基于某些原因,需要后端手动上传图片,然后给出图片地址,然后替换vue项目里的图片地址。打算让后端人员来维护,但是不可能让他们去项目里找到想要的模块,然后替换相应的地址;于是想到的解决办法就是,前端提供一个静态文件(config.js),里面是所有需要替换的图片地址。 一开始是在.vue文件里import该文件,但是每次build打包后,...