在使用Vue編寫表格組件時,需要將后臺返回的數(shù)據(jù)進行格式化和轉換,以便能夠正確地顯示數(shù)據(jù)和操作數(shù)據(jù)。
// 原始數(shù)據(jù)格式 [ { id: 1, name: '張三', age: 25 }, { id: 2, name: '李四', age: 30 }, { id: 3, name: '王五', age: 28 } ] // 轉換為表格數(shù)據(jù)格式 [ { id: 1, name: '張三', age: 25, _show: true }, { id: 2, name: '李四', age: 30, _show: true }, { id: 3, name: '王五', age: 28, _show: true } ]
其中,_show
用于控制行的顯示和隱藏,可以使用v-show
指令動態(tài)顯示和隱藏行。
ID 姓名 年齡 {{item.id}} {{item.name}} {{item.age}}
除了轉換數(shù)據(jù)格式以外,Vue中的table組件還有一些常用的功能,例如:
- 排序:使用
Array.sort()
方法對數(shù)據(jù)進行排序,然后重新渲染表格。 - 搜索:使用
Array.filter()
方法對數(shù)據(jù)進行搜索,然后重新渲染表格。 - 分頁:將數(shù)據(jù)轉換為多頁數(shù)據(jù),然后顯示對應頁碼的數(shù)據(jù)。
// 根據(jù)年齡升序排列 sortData() { this.list = this.list.sort((a, b) =>a.age - b.age) }
// 根據(jù)關鍵字搜索 search(keyword) { this.list = this.originData.filter(item =>item.name.includes(keyword) || item.age.toString().includes(keyword) ) }
// 將數(shù)據(jù)轉換為多頁數(shù)據(jù) getPageData() { const startIndex = (this.currentPage - 1) * this.pageSize const endIndex = startIndex + this.pageSize const data = this.list.slice(startIndex, endIndex) return data }
下一篇vue table官網