Vue + element.ui table 分頁功能+搜尋功能的實現
打算在這個表格裡面加上分頁的功能
廢話不多說直接上程式碼了,程式碼寫的比較亂,湊合看吧
<template>
<div>
<el-table :data="tableData2" style="width: 100%">
<el-table-column label="Password" prop="Password"> </el-table-column>
<el-table-column label="Name" prop="name"> </el-table-column>
<el-table-column
label="Nianji"
prop="Nianji"
column-key="Nianji"
:filters="[
{ text: '大一', value: '大一' },
{ text: '大二', value: '大二' },
{ text: '大三', value: '大三' },
{ text: '大四', value: '大四' },
]"
:filter-method="filterHandler_Nianji"
>
</el-table-column>
<el-table-column
label="Zhuanye"
prop="Zhuanye"
column-key="ZHuanye"
:filters="[
{ text: '1', value: '1' },
{ text: '2', value: '2' },
{ text: '3', value: '3' },
{ text: '4', value: '4' },
{ text: '5', value: '5' },
{ text: '6', value: '6' },
{ text: '7', value: '7' },
]"
:filter-method="filterHandler_Zhuanye"
>
</el-table-column>
<el-table-column align="right">
<template slot="header" slot-scope="scope">
<el-input
scope
style="width: 80%"
v-model="search"
size="mini"
placeholder="輸入關鍵字搜尋"
/>
</template>
<template slot-scope="scope">
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)"
>Edit</el-button
>
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.$index, scope.row)"
>Delete</el-button
>
</template>
</el-table-column>
</el-table>
<!--
el-pagination 這個是table下面的分頁欄
@next-click="handleNextClick"
next-click 官方解釋是: 使用者點選上一頁按鈕改變當前頁後觸發
當點選上一頁的時候,觸發next-click 呼叫了handleNextClick 方法
-->
<el-pagination
@next-click="handleNextClick"
@prev-click="handlePrevClick"
@current-change="handleCurrentChange"
:current-page="currentpage"
background
layout="prev, pager, next"
:total="tableData_length"
>
</el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{
Password: "2016-05-02",
name: "王小a",
Nianji: "大二",
Zhuanye: "5",
},
{
Password: "2016-05-04",
name: "王小b",
Nianji: "大二",
Zhuanye: "3",
},
{
Password: "2016-05-01",
name: "王小c",
Nianji: "大二",
Zhuanye: "1",
},
{
Password: "2016-05-03",
name: "王小d",
Nianji: "大一",
Zhuanye: "2",
},
{
Password: "2016-05-02",
name: "王小a",
Nianji: "大二",
Zhuanye: "5",
},
{
Password: "2016-05-04",
name: "王小b",
Nianji: "大二",
Zhuanye: "3",
},
{
Password: "2016-05-01",
name: "王小c",
Nianji: "大二",
Zhuanye: "1",
},
{
Password: "2016-05-03",
name: "王小d",
Nianji: "大一",
Zhuanye: "2",
},
{
Password: "2016-05-02",
name: "王小a",
Nianji: "大二",
Zhuanye: "5",
},
{
Password: "2016-05-04",
name: "王小b",
Nianji: "大二",
Zhuanye: "3",
},
{
Password: "2016-05-01",
name: "王小c",
Nianji: "大二",
Zhuanye: "1",
},
{
Password: "2016-05-03",
name: "王小d",
Nianji: "大一",
Zhuanye: "2",
},
],
search: "", //input的值
currentpage: 1, //當前頁面
tableData2: [], //嗯。。。
tableData_length: 0, //總條目數
};
},
methods: {
handleEdit(index, row) {
console.log(index, row);
},
handleDelete(index, row) {
console.log(index, row);
this.tableData.splice(index, 1);
},
//條件選擇
filterHandler_Nianji(value, row, column) {
//篩選年級
const property = column["property"];
return row[property] === value;
},
filterHandler_Zhuanye(value, row, column) {
//篩選專業
const property = column["property"];
return row[property] === value;
},
handleCurrentChange(val) {
//點選中間頁的按鈕 執行的方法
this.currentpage = val;
this.handleTableData();
},
handlePrevClick(val) {
//點選向前的按鈕 執行的方法
this.currentpage = val;
this.handleTableData();
},
handleNextClick(val) {
//點選向後的按鈕 執行的方法
//val的值是傳遞進來的引數,如果是在第一頁,點選下一頁,這裡的val就是2
//觸發該方法後,將val賦值給 currentpage, currentpage =>用來存放當前頁面值的量
this.currentpage = val;
//再呼叫handleTableData 方法
this.handleTableData();
},
handleTableData() {
//處理資料
//這個方法是將tableData這個陣列裡的資料,按照每頁10條資料,進行處理
//將this.tableData.length 賦值給 this.tableData_length(這個引數是和第65行的total進行繫結
//total =>總條目數,你的資料能放幾頁,這個total就是多少)
//根據currentpage去獲取 範圍內的資料 再把值賦值給 程式碼第3行的 tableData2
this.tableData_length = this.tableData.length;
this.tableData2 = this.tableData.slice(
(this.currentpage - 1) * 10,
this.currentpage * 10
);
},
handleSearch(val) {
let search = val;
if (search == "") {
//如果search不等於空
this.tableData2 = this.tableData;
this.tableData_length = this.tableData2.length;
}
if (search != "") {
//如果search等於空
this.tableData2 = this.tableData.filter(
(data) =>
!search || data.name.toLowerCase().includes(search.toLowerCase())
);
this.tableData_length = this.tableData2.length;
}
},
},
watch: {
//watch監視input輸入值的變化,只要是watch變化了 search()就會被呼叫
search(newVal) {
this.handleSearch(newVal);
},
},
mounted() {
this.tableData2 = this.tableData;
this.tableData_length = this.tableData.length;
},
};
</script>
相關文章
- DjangoRestFramework 實現分頁功能與搜尋功能DjangoRESTFramework
- vue + axios 實現分頁引數傳遞,高階搜尋功能實現VueiOS
- 分頁功能的實現
- Elasticsearch搜尋功能的實現(五)-- 實戰Elasticsearch
- Vue + Element UI + Lumen 實現通用表格功能 - 分頁VueUI
- 搜尋功能
- 使用 jQuery 實現分頁功能jQuery
- web 實現分頁列印功能Web
- 【Django】組合條件的搜尋功能實現Django
- 線上直播系統原始碼,vue實現搜尋文字高亮功能原始碼Vue
- AntDesign - Vue Table元件 實現動態表格、表頭分組的功能(方式一)Vue元件
- 文章內容分頁功能實現
- 移動端頁面鍵盤出現“搜尋”按鍵且實現提交功能
- 微信小程式 簡易搜尋功能實現微信小程式
- SAP UI5應用裡搜尋功能的實現UI
- 相見恨晚!開源的傻瓜搜尋引擎,幫你快速實現搜尋功能
- Vue+Antd搭配百度地圖實現搜尋定位等功能Vue地圖
- 【搜尋引擎】Solr Suggester 實現全文檢索功能-分詞和和自動提示Solr分詞
- 使用APICloud AVM多端元件快速實現app中的搜尋功能APICloud元件APP
- Chrome的強大搜尋功能Chrome
- Vue路由+Tab元件實現多頁籤功能Vue路由元件
- vue.js搭建使用者管理系統練手(八)----實現搜尋功能Vue.js
- JS模擬瀏覽器全域性搜尋功能實現JS瀏覽器
- 搜尋功能測試點
- 網站搜尋功能lucene網站
- 輸入框/搜尋功能/新增、修改功能測試
- 搜尋模組功能分析
- vue vxe-table 實現財務記賬憑證和列印功能Vue
- hybris commerce storefront的產品搜尋功能
- GNOME 搜尋功能的一些小技巧
- 【Vue】考試功能實現Vue
- Trie|如何用字典樹實現搜尋引擎的關鍵詞提示功能
- vue2實現搜尋結果中的搜尋關鍵字高亮Vue
- 直播系統程式碼,常用搜尋中搜尋歷史,搜尋推薦功能
- HHDESK檔案內文字搜尋功能
- Spring Boot入門系列(十六)使用pagehelper實現分頁功能Spring Boot
- Angular6-Filter實現頁面搜尋AngularFilter
- 二分搜尋演算法的實現演算法