歡迎您光臨本站 註冊首頁

Element實現表格巢狀、多個表格共用一個表頭的方法

←手機掃碼閱讀     zhang3221994 @ 2020-05-10 , reply:0

一、分析需求
這裡先上一張圖說明 需求 :
根據後端返回的資料 ( res 是一個陣列,它的元素是一個物件,物件裡面的 ext 屬性是一個物件,它又包含了, default 、 free 和 pay 三個屬性,且這三個都是陣列格式。):
渲染出一個這樣子的 表格 :
res 資料:
res 的每一個元素的直接屬性 name (即為郵費模板名稱,比如成都運費模板),
res 的 ext 屬性下的三個陣列 default 、 free 、 pay ,每一個陣列要大的一行(這一行中,第一列是運送到的地址的名字,這裡定義的是 area 屬性,但後端是未給到這個欄位的,可自己處理資料新增該欄位 ,這裡就不細說了。) 這個 area 屬性佔據的這一列,在頁面的展示效果 應該是多行合併的效果。
二、程式碼實現:


三、知識點總結:
為什麼要採用這種方式解決(渲染)?
① . 專案用的UI元件是Element,它的Table表格元件,沒有直接處理行的操作。
② . el-table,它是透過注入data物件陣列,並在el-table-column 中用prop屬性來對應物件中的鍵名來填入資料,從而渲染出渲染表格。其中el-table-column表示一個列,label屬性來定義表格的列名,即物件的一個鍵名代表一列;
③ . 沒想到更優的解決辦法,O(∩_∩)O哈哈~
多個表格共用一個表頭時,注意:
①. 需做判斷,同時注意label的值。
②. 當el-table-column 的屬性label無值的時候,還是會佔用空間,故當前表格在頁面上會出現一個代表表頭的空行,需要手動更改(重寫)Element表格的 thead樣式
table表格巢狀的時候,注意:
① . Element的Table元件可 自定義列模板,主要是利用它實現表格巢狀部分,透過 Scoped slot 可以獲取到 row, column, $index 和 store(table 內部的狀態管理)的資料,更多用法參考官網。
②. Element的Table元件可 合併行或列 ,多行或多列共用一個資料時,可以合併行或列;透過給table傳入span-method方法可以實現合併行或列,參考上述程式碼的 **objectSpanMethod**方法(該表格的第一列需要合併多行――合併渲染表格的data陣列的長度那麼多行) 或者官網。


[zhang3221994 ] Element實現表格巢狀、多個表格共用一個表頭的方法已經有258次圍觀

http://coctec.com/docs/program/show-post-233635.html