vue?el-table實現動態(tài)添加行和列具體代碼
實現思路:
最近遇到一個動態(tài)增加行和列的需求,本來拿到需求的時候想用el-table中自帶的方法去實現的,但是經過嘗試發(fā)現不能滿足想要實現的需求。沒辦法只能在el-table的基礎上自己寫原生。
大概思路如下:
1.首先把table中需要動態(tài)增加的行和列分開,分別定義一個數組dataList存放新增行數據,定義數組columnList存放新增列數據。
2.其次在指定列的數據前面加新增按鈕,點擊新增按鈕的時候請求接口拿到數據。
3.然后把拿到的數據處理,把表格內容的數據push到dataList中,把表頭內容數據push到columnList中。注意如果接口沒有返回表頭數據,則需要自己根據具體需求創(chuàng)造對應列的key-value存入columnList中。
(1)行可以直接添加在現有行后面展示,也可以在指定行的后面新增行。比如:在第一行后面新增行,則使用splice添加。splice(指定行,0,添加的新行數據)
(2)點擊哪行則在哪行后面添加新行。思路:獲取到當前點擊行的索引,使用splice添加。splice(指定行,0,添加的新行數據)
4.最后把dataList給el-table的:data="dataList"使用,columnList給使用
5.以上是新增行和列的思路。如果想刪除行和列的話,則需要通過splice或slice操作dataList和columnList即可。刪除指定的索引位置。
大致代碼如下:
<el-table :data="dataList">
<el-table-column label="姓名" prop="name"></el-table-column>
<!--動態(tài)列-->
<el-table-column v-for="(it, index) in columnList" :key="index" :label="it.label">
<!--動態(tài)行-->
<template slot-scope="scope">
<i class="el-icon-circle-plus-outline" @click="handleAddRow(scope.row, scope.$index)" />
<span>{{scope.row.value}}</span>
// 根據項目需求進行其他邏輯處理
</template>
</el-table-column>
</el-table>
export default {
data() {
return {
dataList: [], // 表格數據
columnList: [], //表頭數據
}
},
methods: {
// 動態(tài)增加行
async handleAddRow(row, index) {
const data = await this.接口()
data.forEach(d => {
// 列添加
this.columnList.push({ label: '年齡' })
// 行添加
this.dataList.splice(index, 0, d)
})
}
}
}結語:
以上是el-table動態(tài)添加行和列的大概思路,大家可以作為參考,再結合具體需求細化?。?!
補充:vue實現el-table表頭自定義
Vue.js 是一個流行的JavaScript框架,它的數據綁定和組件化特性使得開發(fā)動態(tài)Web應用變得更加容易。其中,強大的UI組件庫(如Element,iView等)能夠極大地提高Web應用開發(fā)效率。而el-table是一種用于展示表格數據的組件,它擁有可排序、過濾、分頁等多種功能。本文主要介紹如何使用Vue.js實現el-table表頭自定義。
在Vue.js中使用el-table組件時,表頭(thead)用于顯示列名和控制排序、過濾等操作。默認情況下,el-table組件根據數據源中的列名自動生成表頭。若需自定義表頭,可通過以下方式實現:
- 使用el-table-column組件
在el-table中使用el-table-column組件可以實現自定義表頭。具體操作如下:
<el-table :data="tableData"> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table>
上述代碼中,我們?yōu)閑l-table添加了三個el-table-column組件,分別對應表格中的三列數據。同時,我們在每個el-table-column組件上指定了prop和label屬性,其中prop屬性指定了對應的數據源中的字段名,label屬性指定了表頭標題。
- 使用Scoped Slots
如果需要實現更加復雜的表頭,可以使用Scoped Slots進行自定義。具體操作如下:
<el-table :data="tableData">
<template slot="header">
<el-row>
<el-col :span="8">日期</el-col>
<el-col :span="8">姓名</el-col>
<el-col :span="8">地址</el-col>
</el-row>
</template>
<el-table-column prop="date"></el-table-column>
<el-table-column prop="name"></el-table-column>
<el-table-column prop="address"></el-table-column>
</el-table>上述代碼中,我們使用了el-table的header slot,它可以讓我們自定義表頭,即在表頭中添加任意HTML代碼。在header slot中我們使用了el-row和el-col組件創(chuàng)建了一個表頭行,然后通過span屬性設置每列所占的寬度,最終實現了自定義表頭。
到此這篇關于vue el-table實現動態(tài)添加行和列的文章就介紹到這了,更多相關el-table動態(tài)添加行和列內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring boot 和Vue開發(fā)中CORS跨域問題解決
這篇文章主要介紹了Spring boot 和Vue開發(fā)中CORS跨域問題解決,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
解決vue項目,npm run build后,報路徑錯的問題
這篇文章主要介紹了解決vue項目,npm run build后,報路徑錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08

