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

vue 中使用 vxe-table 制作可編輯表格的使用過程

 更新時(shí)間:2021年08月13日 11:47:09   作者:1234稻草人  
這篇文章主要介紹了vue 中使用 vxe-table 制作可編輯表格的使用過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

項(xiàng)目上有一個(gè)表格需要實(shí)現(xiàn)在線編輯,開始用了 element 的el-table 實(shí)現(xiàn),單元格內(nèi)基礎(chǔ)情況就是監(jiān)聽了單擊單元格切換一個(gè)span標(biāo)簽與input標(biāo)簽,復(fù)雜點(diǎn)的單元格使用了大量的條件判斷來實(shí)現(xiàn)對(duì)應(yīng)的編輯操作,比如下拉選,popover彈框編輯。整個(gè)表格幾十列,十幾條數(shù)據(jù)就已經(jīng)出現(xiàn)了明顯的卡頓,在做了諸多操作(比如el-input使用原生input替換、減少判斷、減少頻繁的數(shù)據(jù)切換等)之后,速度雖然有所提升,但是還是肉眼可見的卡頓,基本不可用。然后便轉(zhuǎn)戰(zhàn)vxe-table,重寫了一遍這個(gè)表格。 (別問我為什么不直接用更好的vxe-table,正經(jīng)人寫代碼誰會(huì)首先想到重構(gòu)而不是試試優(yōu)化呢。。。)

下面記錄一下使用過程。

1. 全局安裝

npm install xe-utils@3 vxe-table@3

main.js 中引入

import 'xe-utils';
import VXETable from 'vxe-table';
import 'vxe-table/lib/style.css';
​
Vue.use(VXETable);

其實(shí)它可以按需加載來減少項(xiàng)目體積,但是我覺得有點(diǎn)麻煩就沒弄,想要了解可以點(diǎn)擊下面鏈接查看~ vue-table 按需加載

2. 基礎(chǔ)用法

<template>
    <vxe-table :align="allAlign" :data="tableData">
        <vxe-table-column type="seq" width="60"></vxe-table-column>
        <vxe-table-column field="name" title="名稱"></vxe-table-column>
        <vxe-table-column field="desc" title="描述"></vxe-table-column>
        <vxe-table-column field="link" title="鏈接"></vxe-table-column>
    </vxe-table>
</template>
<script>
    export default {
        data () {
            return {
                allAlign: null,
                tableData: [
                    {
                        name: "html",
                        desc: '超文本標(biāo)記語言',
                        link: 'https://www.runoob.com/html/html-tutorial.html'
                    },
                    {
                        name: "css",
                        desc: '層疊樣式表',
                        link: 'https://www.runoob.com/css/css-intro.html'
                    },
                    {
                        name: "js",
                        desc: 'JavaScript',
                        link: 'https://www.runoob.com/js/js-tutorial.html'
                    }
                ]
            }
        }
    }
</script>

以上,即可實(shí)現(xiàn)一個(gè)基礎(chǔ)表格,但是現(xiàn)在僅僅是表格展示,實(shí)現(xiàn)編輯還需要另外的配置。

3. 實(shí)現(xiàn)編輯

<template>
    <!--表格添加edit-config配置-->
    <vxe-table border :data="tableData" :edit-config="{trigger: 'click', mode: 'cell'}">
        <!--對(duì)單元格vxe-table-column進(jìn)行改造,使用edit-render來配置編輯屬性--->
        <vxe-table-column title="描述" width="180" fixed="left" field="desc"
                          :edit-render="{name: 'input', attrs: {type: 'text'}}">
        </vxe-table-column>
    </vxe-table>
</template>

具體配置可以查看 api

3. 實(shí)現(xiàn)下拉選擇

<template>
    <vxe-table border :data="tableData" :edit-config="{trigger: 'click', mode: 'cell'}">
        <!--和輸入框編輯區(qū)別僅在于edit-render的配置不同,data中新增選項(xiàng)selection--->
        <vxe-table-column title="是否展示" width="180" field="isShow"
                          :edit-render="{name: 'select', options: selection, optionProps:                                         {value: 'status', label: 'label'}}">
        </vxe-table-column>
    </vxe-table>
</template>
<script>
    export default {
        data () {
            return {
                allAlign: null,
                tableData: [
                    {
                        name: "html",
                        desc: '超文本標(biāo)記語言',
                        link: 'https://www.runoob.com/html/html-tutorial.html',
                        isShow: 1
                    }
                    // 省略一下多條數(shù)據(jù)········
                ],
                selection: [
                    {status: 1, label: '是'},
                    {status: 0, label: '否'}
                ]
            }
        }
    }
</script>

4. 自定義模板

vxe-table自定義模板是使用插槽實(shí)現(xiàn)的,可以使用<template #插槽名></template>實(shí)現(xiàn),比如:

<vxe-table-column field="name" width="120" title="名稱"
                  :edit-render="{name: 'input', attrs: {type: 'text'}}">
    <!--使用#header自定義表頭-->
    <template #header>
        <span>名稱</span>
        <span style="font-size: 12px; color: #ccc">技術(shù)</span>
    </template>
    <!--使用#default自定義內(nèi)容-->
    <template #default="{row}">
        <span>技術(shù)名稱</span>
        <span>{{row.name}}</span>
    </template>
    <!--使用#edit自定義編輯-->
    <template #edit="{row}">
        <p>技術(shù)名稱</p>
        <input type="text" v-model="row.name" class="vxe-default-input">
    </template>
</vxe-table-column>

需要演示,所以把名稱列做成了可編輯列,使用#header、#default、#edit分別自定義了列頭、默認(rèn)顯示內(nèi)容、編輯顯示內(nèi)容,如下圖:

5. 實(shí)時(shí)保存功能

使用vxe-table的edit-closed方法監(jiān)聽編輯框關(guān)閉,調(diào)用更新接口即可實(shí)現(xiàn)。

<template>
    <vxe-table border :data="tableData" :edit-config="{trigger: 'click', mode: 'cell'}"
               @edit-closed="updateData">
        <vxe-table-column title="是否展示" width="180" field="isShow"
                          :edit-render="{name: 'select', options: selection, optionProps:                                         {value: 'status', label: 'label'}}">
        </vxe-table-column>
    </vxe-table>
</template>
<script>
    export default {
        data () {
            // 省略掉···
        },
        methods: {
            updateData ({ row, column }) {
                // 后臺(tái)更新接口接受一條數(shù)據(jù),所以傳row即可
                console.log(row);
            }
        }
    }
</script>

其實(shí)官方方法還實(shí)現(xiàn)了檢查當(dāng)前單元格內(nèi)容是否更改,不過我們這里數(shù)據(jù)結(jié)構(gòu)略復(fù)雜,源碼里的方法不太適用。 這里貼出來一下

editClosedEvent ({ row, column }) {
    const $table = this.$refs.xTable
    const field = column.property
    const cellValue = row[field]
    // 判斷單元格值是否被修改
    if ($table.isUpdateByRow(row, field)) {
        setTimeout(() => {
            this.$XModal.message({
                content: `局部保存成功! ${field}=${cellValue}`,
                status: 'success'
            })
            // 局部更新單元格為已保存狀態(tài)
            $table.reloadRow(row, null, field)
        }, 300)
    }
}

以上即為實(shí)現(xiàn)可編輯表格的基本寫法,容我再研究一下如何檢測(cè)數(shù)據(jù)很深的情況下如何檢測(cè)數(shù)據(jù)是否發(fā)生改動(dòng)。

總結(jié)一下,vxe-table的可編輯表格直接內(nèi)置了可編輯的功能,配置即可用,避免了el-table的各種判斷切換,可以更優(yōu)雅的實(shí)現(xiàn)編輯功能,另外它還支持虛擬滾動(dòng),在大量數(shù)據(jù)加載時(shí)可以有更好的性能。缺點(diǎn)就是在UI圖確定的情況下需要重寫表格樣式,挺費(fèi)時(shí)間的。

建議各位如果遇到復(fù)雜表格的話,就不要自己想著優(yōu)化性能了,直接使用vxe-table一步到位,后期徒增重構(gòu)成本,血的教訓(xùn)啊

到此這篇關(guān)于vue 中使用 vxe-table 制作可編輯表格的文章就介紹到這了,更多相關(guān)vue可編輯表格內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于VUE實(shí)現(xiàn)的九宮格抽獎(jiǎng)功能

    基于VUE實(shí)現(xiàn)的九宮格抽獎(jiǎng)功能

    這篇文章主要介紹了基于VUE實(shí)現(xiàn)的九宮格抽獎(jiǎng)功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • DeepSeek?助力?Vue?開發(fā)絲滑的步驟條效果(過程詳解)

    DeepSeek?助力?Vue?開發(fā)絲滑的步驟條效果(過程詳解)

    本文詳細(xì)介紹了如何使用Vue.js和ElementUI創(chuàng)建一個(gè)進(jìn)度條組件,并將所有代碼保存在一個(gè)文件夾中,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • Vue項(xiàng)目中ESLint配置超全指南(VScode)

    Vue項(xiàng)目中ESLint配置超全指南(VScode)

    ESLint是一個(gè)代碼檢查工具,用來檢查你的代碼是否符合指定的規(guī)范,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中ESLint配置(VScode)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Vue3+X6流程圖實(shí)現(xiàn)數(shù)據(jù)雙向綁定詳解

    Vue3+X6流程圖實(shí)現(xiàn)數(shù)據(jù)雙向綁定詳解

    這篇文章主要為大家詳細(xì)介紹了Vue3如何結(jié)合X6流程圖實(shí)現(xiàn)數(shù)據(jù)雙向綁定,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • vue實(shí)現(xiàn)文章內(nèi)容過長(zhǎng)點(diǎn)擊閱讀全文功能的實(shí)例

    vue實(shí)現(xiàn)文章內(nèi)容過長(zhǎng)點(diǎn)擊閱讀全文功能的實(shí)例

    下面小編就為大家分享一篇vue實(shí)現(xiàn)文章內(nèi)容過長(zhǎng)點(diǎn)擊閱讀全文功能的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Vue.nextTick純干貨使用方法詳解

    Vue.nextTick純干貨使用方法詳解

    這篇文章主要為大家介紹了Vue.nextTick使用方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Vue中全局限制輸入特殊字符方式

    Vue中全局限制輸入特殊字符方式

    這篇文章主要介紹了Vue中全局限制輸入特殊字符方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue-router的HTML5 History 模式設(shè)置

    vue-router的HTML5 History 模式設(shè)置

    這篇文章主要介紹了vue-router的HTML5 History模式設(shè)置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • Vite配置優(yōu)雅的code?spliiting代碼分割詳解

    Vite配置優(yōu)雅的code?spliiting代碼分割詳解

    這篇文章主要為大家介紹了Vite配置優(yōu)雅的code?spliiting代碼分割詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • vue配置別名alias在webstorm不生效問題及解決

    vue配置別名alias在webstorm不生效問題及解決

    這篇文章主要介紹了vue配置別名alias在webstorm不生效問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評(píng)論

临沭县| 鄄城县| 富源县| 黑龙江省| 福州市| 公安县| 泰来县| 金阳县| 贵德县| 手游| 梅河口市| 文登市| 千阳县| 奇台县| 佛学| 民勤县| 托克托县| 赤峰市| 南投市| 神木县| 平果县| 土默特左旗| 安吉县| 将乐县| 秦皇岛市| 策勒县| 綦江县| 临西县| 苗栗县| 同仁县| 穆棱市| 和政县| 松潘县| 卓资县| 诏安县| 茶陵县| 高陵县| 赤壁市| 武安市| 大洼县| 九江县|