最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue 自適應高度表格的實現方法

 更新時間:2020年05月13日 14:37:38   作者:淺小暢  
這篇文章主要介紹了Vue 自適應高度表格的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

示例版本為 Element-ui 2.13.1 + Vue 2.6.11

本人是做后臺開發(fā)的,由于公司業(yè)務要求需要將前后臺模塊進行分離,兩年前選擇使用vue-element-admin 項目進行前臺的開發(fā),該框架集成了很多功能,特別適合對 Vue 很陌生的新手,公司項目組成員接受程度普遍較高。

在使用過程中 表格 是必不可少的一個控件,用于展示數據,單頁數據量過多就會導致瀏覽器自動生成右側滾動條。

如果頁面有頭部信息或查詢按鈕,移動滾動條后會遮擋住這些操作和信息內容。

Element-UI 中的 el-table 提供了設置高度的選項,在代碼中設置 height 屬性就可以現在表格的高度,數據量過多也只會在表格內部生成滾動條,而不是整個頁面生成滾動條。

但是這個高度需要固定的數值,不同的分辨率或者縮放后的瀏覽器使用固定高度后,不能滿足只在 el-table 內部生成滾動條的條件。

想要滿足上述條件就需要使用 v-adaptive 指令了。

Vue 自定義指令

你可能會好奇 v-adaptive 是在哪里來的?它是自定義的指令,設置表格高度需要對普通 DOM 元素進行底層操作。Vue 除了核心功能默認內置的指令 ( v-model 和  v-show ),也允許注冊自定義指令,相關 Api 可以查看 官方文檔 。

v-adaptive

新建包名 src/directive/el-table ,創(chuàng)建 adaptive.js 。頁面縮放的監(jiān)聽是使用的 element-ui 中的 resize-event ,將 addResizeListenerremoveResizeListener 引入進來。自定義指令要用到的鉤子函數:

  • bind:只調用一次,指令第一次綁定到元素時調用。在這里可以進行一次性的初始化設置。
  • inserted:被綁定元素插入父節(jié)點時調用 (僅保證父節(jié)點存在,但不一定已被插入文檔中)。
  • unbind:只調用一次,指令與元素解綁時調用。
import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event'

 // 設置表格高度
 const doResize = async(el, binding, vnode) => {
 // 獲取表格Dom對象
 const { componentInstance: $table } = await vnode
 // 獲取調用傳遞過來的數據 
 const { value } = binding

 if (!$table.height) {
  throw new Error(`el-$table must set the height. Such as height='100px'`)
 }
 // 獲取距底部距離(用于展示頁碼等信息)
 const bottomOffset = (value && value.bottomOffset) || 30

 if (!$table) return

 // 計算列表高度并設置
 const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset
 $table.layout.setHeight(height)
 $table.doLayout()
}

export default {  
  // 初始化設置
  bind(el, binding, vnode) { 
    // 設置resize監(jiān)聽方法
    el.resizeListener = async() => { 
      await doResize(el, binding, vnode)
    }    
    // 綁定監(jiān)聽方法到addResizeListener
    addResizeListener(window.document.body, el.resizeListener)  
  },  
  // 綁定默認高度
  async inserted(el, binding, vnode) { 
    await doResize(el, binding, vnode)  
  },  
  // 銷毀時設置
  unbind(el) { 
    // 移除resize監(jiān)聽
    removeResizeListener(el, el.resizeListener)  
  }
}

接下來,需要將寫好的邏輯綁定到 Vue 中,在同一目錄下新建 index.js

import adaptive from './adaptive'

const install = function(Vue) {   
  // 綁定v-adaptive指令
  Vue.directive('adaptive', adaptive)
}

if (window.Vue) {
  window['adaptive'] = adaptive  
  // eslint-disable-next-line no-undef 
  Vue.use(install)
}

adaptive.install = install

export default adaptive

在單頁面使用

指令相關代碼已經寫好了,接下來就是該如何使用了。找到想要設置表格自適應高度的 vue 文件,在 script 標簽下引入自定義的指令并綁定。

import adaptive from '@/directive/el-table'
export default { 
  name:'Test',
  directives: { adaptive },
  ... ...
}

然后找到表格所在的標簽添加指令相關的代碼:

<el-table  
  ref="table"
  // 自定義指令,bottomOffset 代表距離底部的距離
  v-adaptive="{bottomOffset: 85}"
  // 高度屬性,100無具體意義,僅為初始值,不可省略
  height="100px" 
 >
 ... ...
 </table>

全局使用

如果存在多個頁面需要設置自適應高度,為了減少使用指令的復雜度,我們可以在 main.js 中全局引入自定義的指令,上述 script 的內容就不需要在每個頁面進行寫入了。

import adaptive from './directive/el-table'

Vue.use(adaptive)

結尾

源碼放在 GitHub 上了,希望可以幫助到你。

 到此這篇關于Vue 自適應高度表格的實現方法的文章就介紹到這了,更多相關Vue 自適應高度表格內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vuecli3打包后出現跨域問題,前端配置攔截器無效的解決

    vuecli3打包后出現跨域問題,前端配置攔截器無效的解決

    這篇文章主要介紹了vuecli3打包后出現跨域問題,前端配置攔截器無效的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue實現element上傳多張圖片瀏覽刪除功能

    vue實現element上傳多張圖片瀏覽刪除功能

    這篇文章主要介紹了vue實現element上傳多張圖片瀏覽刪除功能,本文結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-10-10
  • vue中重定向redirect:‘/index‘,不顯示問題、跳轉出錯的完美解決

    vue中重定向redirect:‘/index‘,不顯示問題、跳轉出錯的完美解決

    這篇文章主要介紹了vue中重定向redirect:‘/index‘,不顯示問題、跳轉出錯的完美解決方案,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-09-09
  • VUE 單頁面使用 echart 窗口變化時的用法

    VUE 單頁面使用 echart 窗口變化時的用法

    這篇文章主要介紹了VUE 單頁面使用 echart 窗口變化時的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue中destroyed方法及使用示例講解

    vue中destroyed方法及使用示例講解

    這篇文章主要為大家介紹了vue中destroyed方法及使用示例講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Vue項目中quill-editor帶樣式編輯器的使用方法

    Vue項目中quill-editor帶樣式編輯器的使用方法

    這篇文章主要介紹了Vue項目中quill-editor帶樣式編輯器的使用方法,可以更改插入圖片和視頻,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • vue-cli 介紹與安裝

    vue-cli 介紹與安裝

    這篇文章主要給大家介紹的是vue-cli 介紹與安裝,vue-cli是和vue進行深度組合的工具,可以快速幫我們創(chuàng)建vue項目,并且把一些腳手架相關的代碼給我們創(chuàng)建好。真正使用vue開發(fā)項目,都是用vue-cli來創(chuàng)建項目的,下面文章詳細內容,需要的朋友可以參考一下
    2021-10-10
  • Vue3配置vite.config.js解決跨域問題的方法

    Vue3配置vite.config.js解決跨域問題的方法

    跨域一般出現在開發(fā)階段,由于線上環(huán)境前端代碼被打包成了靜態(tài)資源,因而不會出現跨域問題,這篇文章主要給大家介紹了關于Vue3配置vite.config.js解決跨域問題的相關資料,需要的朋友可以參考下
    2024-07-07
  • VUE正則表達式用法全集整理(推薦!)

    VUE正則表達式用法全集整理(推薦!)

    正則表達式是由一些特定的字符組成,代表一個規(guī)則,可以用來檢驗數據格式是否合法,也可以在一段文本中查找滿足要求的內容,這篇文章主要給大家介紹了關于VUE正則表達式用法的相關資料,需要的朋友可以參考下
    2024-02-02
  • Vue切換Tab動態(tài)渲染組件的操作

    Vue切換Tab動態(tài)渲染組件的操作

    這篇文章主要介紹了Vue切換Tab動態(tài)渲染組件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論

揭阳市| 巴彦县| 广平县| 鄂托克前旗| 甘谷县| 韩城市| 青海省| 英超| 都兰县| 新宾| 禄劝| 饶阳县| 泸水县| 塔城市| 阜康市| 循化| 鄂州市| 桓台县| 健康| 乌鲁木齐市| 张北县| 蒙山县| 游戏| 双牌县| 崇明县| 廊坊市| 龙门县| 乌恰县| 德清县| 盐池县| 济源市| 彩票| 安阳市| 福贡县| 阳原县| 武城县| 青田县| 湄潭县| 多伦县| 平和县| 鲁山县|