基於element ui實現table可配置化

2021-09-27 11:57:21 字數 2888 閱讀 4180

感謝 餓了麼前端團隊提供元件化框架elememt-ui,本文基礎元件使用element-ui。

在開發一些系統過程中,使用table作資料展示在所難免。先來看看el-table元件。

非常簡單易用的元件,根據提供的data資料,配置table每一列的資料和label。沒錯,這樣似乎都是ok的,但是在開發大量包含table的頁面,會發現每次都需要去複製el-table-column,或者你會說你已經很屬性element-ui整套框架的文件。然而,重複的**很多及**量很大。作為一名程式設計師,某一天需要寫自己已經寫過的某段**,是不是感覺有點不應該呢。。。

"tabledata">

"(item,key) in columnsconfig"

:key="key"

:label="item.label"

:prop="item.prop">

data

() , ]

}}

這樣可以很輕鬆的渲染出來table。

這裡有個小技巧

el-table-column改造下

"tabledata">

"(item,key) in columnsconfig"

:key="key"

v-bind="item">// 這裡改造

v-bind可以繫結乙個物件,這樣會讀取item物件的每個屬性,使用到元件當中去。比如增加width: 100,只需要在columnsconfig沒一項增加width即可,el-table-column不需要改動。

"日期"

width="120">

"scope">}

很明顯,el-table-column的slots配置在columnsconfig陣列不能用。 在原始碼找到解決辦法(檔案路徑:[email protected]@element-ui\packages\table\src\table-column.js),create鉤子函式**如下:

在this.columnconfig.rendercell函式渲染每乙個table cell,如果使用slots會讀取,slots中的內容。 編寫乙個新元件使用vue extends,繼承el-table-columns,重寫了rendercell函式改變其返回內容,這時候用jsx將內容用return slots的函式傳回來。

首先,看看columnsconfig怎麼寫

columnsconfig: [>

)}}, ],

其次,開發新元件 column-plus.vue,**如下
最後,元件用通過模板,配置資料即可
"tabledata">

"item" v-for="(item,key) in columnconfigs" :key="key">

配置資料

columnsconfig: [>

)}}, ]****

元件開發實現可配置開發,可達到快速開發的目的和簡化**。 需要說明vue extends和mixins屬性,這兩個屬性都是繼承,屬性和方法重寫,鉤子函式是先呼叫父類在呼叫自己的,上面的例子(el-table-column 先呼叫在呼叫本身的),但是區別是:

另外,vue-cli使用jsx編寫需要安裝三個外掛程式。

發布了一天沒想到有這麼小夥伴閱讀,有幾點需要補充下。

這是iview,table元件的**

render: (h, params) => 

}, 'view'),

h('button',

}, 'edit')

]);}

當然使用render之後,需要使用filter,就比較尷尬了。不過,vue的filter其實也是語法糖,最終編譯是編譯成函式處理。

那如果想使用filter怎麼辦?

data

() )}}]

}},methods:

}

寫過react都知道是這麼幹的。

所以,一直以來前端把js寫在html中,還是把html寫js中,都是爭論不休的話題,如何選擇還開發自己拿捏。

不使用render**是這樣的

"tabledata"

style="width: 100%">

"date"

label="日期"

width="180">

"name"

label="姓名"

width="180">

"address"

label="位址">

使用render處理是這樣的

"tabledata">

"item" v-for="(item,key) in columnconfigs" :key="key">

data

() , , ]}}

更多專業前端知識,請上

【猿2048】www.mk2048.com

jQuery easyui實現關閉全部tabs

有時候當我們開啟很多tabs選項卡時,要關閉它只能乙個乙個的進行關閉,顯然太麻煩,這時可以在選項卡的最右邊新增乙個按鈕 實現關閉全部。function opentab text,url,iconcls else 獲取最後乙個tabs 在新加的選項卡後面新增 關閉全部 var li tabs wrap...

jQuery easyui實現關閉全部tabs

有時候當我們開啟很多tabs選項卡時,要關閉它只能乙個乙個的進行關閉,顯然太麻煩,這時可以在選項卡的最右邊新增乙個按鈕 實現關閉全部。function opentab text,url,iconcls else 獲取最後乙個tabs 在新加的選項卡後面新增 關閉全部 var li tabs wrap...

element ui實現前端分頁

element ui裡的分頁元件 size change handlesizechange current change handlecurrentchange current page page page sizes 20,50,100 background page size limit lay...