小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

發(fā)送post請求渲染el-table,并實現(xiàn)搜索和分頁功能

 算法與編程之美 2022-09-13 發(fā)布于四川

一、問題

使用post方法訪問api,拿到數(shù)據(jù)之后,與el-teble表格進(jìn)行綁定,并在搜索框中通過關(guān)鍵詞來進(jìn)行表格數(shù)據(jù)的搜索。

二、方法

本篇文章使用的是axios發(fā)送post實現(xiàn)的,實現(xiàn)步驟如下:

  1. 首先安裝axios,安裝指令:

  2. 安裝之后,在main.js文件里面引入axios:

  3. 先寫一個搜索框和搜索按鈕出來

  4. 使用el-table表格,這是element-ui里面的表格,所以要先引入elemeng-ui,在main.js里面引入,引入之前進(jìn)行安裝,在控制端中安裝指令是:

    在main.js文件引入,代碼如下:

5、然后就可以使用el-table標(biāo)簽了


:data=”tableData”,意思是表格的數(shù)據(jù)來源于tableData,所以現(xiàn)在要在script里面給定一個tableData列表


表格中每一列的數(shù)據(jù)是通過prop來進(jìn)行綁定的,因為要使用到api的數(shù)據(jù),所以這里prop的命名要與api相對應(yīng)的數(shù)據(jù)命名一樣,這里寫了兩列。分別是id和name

6、寫方法函數(shù)進(jìn)行post請求拿到api里面的數(shù)據(jù)


methods里面就用來放方法,created是vue里面的一個生命周期鉤子函數(shù),vue實例被生成之后就會調(diào)用這個函數(shù),換言之,頁面初始化的時候調(diào)用這個函6.1、寫入方法getPageData

6.2、使用axios發(fā)送post請求


里面有三個需要注意的,url就是api的地址,data通過傳入的參數(shù)來進(jìn)行發(fā)送post請求,config中headers就是請求的配置,拿到數(shù)據(jù)之后用response儲存起來,這樣response就是我們拿到的api里的數(shù)據(jù)了,拿到之后我們要把a(bǔ)pi里拿到的數(shù)據(jù)給tableData


api里面列表數(shù)據(jù)是records,所以在給tableData的時候是把這個列表賦值給它


6.3、在created里面,是頁面創(chuàng)建的時候調(diào)用該方法

7、將api的數(shù)據(jù)渲染到頁面el-table里面
prop的命名要和api里面,你要渲染到頁面上的數(shù)據(jù)命名一樣,通過prop綁定之后,數(shù)據(jù)會自動識別,進(jìn)行渲染。


8、實現(xiàn)搜索
8.1、在input里面綁定回車事件,按鈕綁定點擊事件,綁定回車事件時使用@keyup.enter=”查詢方法名”,綁定點擊事件使用@click,下圖getSearchPage為搜索的方法,使用v-model獲取input里面輸入的值,賦值給search參數(shù)。

9、搜索方法實現(xiàn)

定義一個search來接收input里面輸入的值


然后getSearchPage也是通過post請求拿到數(shù)據(jù),但是這次是通過name來拿到數(shù)據(jù)


search就是獲取的輸入框里的關(guān)鍵詞
如果說我們輸入123,那這里name就為name:”123”,這樣拿到的數(shù)據(jù)就是關(guān)于123的幾條數(shù)據(jù)。這樣搜索功能就實現(xiàn)了。

10、實現(xiàn)el-table分頁

10.1、需要定義的變量

在el-table里面添加分頁代碼

10.2、在表格代碼下寫下分頁器代碼

@size-change就是改變一頁數(shù)據(jù)的大小

@current-change就是改變第幾頁,:page-size=”[1,5,10,20]”就是一頁有多少條數(shù)據(jù)的選擇。

實現(xiàn)的效果就是如下圖:

這樣就實現(xiàn)了使用post請求拿到數(shù)據(jù)渲染到el-table上面,并且實現(xiàn)了分頁。

三、實驗結(jié)果與討論

代碼清單 1

<template>
 <div class="search">
   <input vaule="請輸入關(guān)鍵詞" v-model="search" @keyup.enter="getSearchPage"></input>
   <input type="button" @click="getSearchPage"></input>
 </div>
 <el-table
     :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
 >
   <el-table-column
       prop="id"
   >
   </el-table-column>
   <el-table-column
       prop="name"
   >
   </el-table-column>
 </el-table>
 <div class="block" style="margin-top:15px;">
   <el-pagination
       align='center'
       @size-change="changePageSize"
       @current-change="changePageCurrent"
       :current-page="currentPage"
       :page-sizes="[1,5,10,20]"
       :page-size="pageSize"
       layout="total, sizes, prev, pager, next, jumper"
       :total="tableData.length">
   </el-pagination>
 </div>
</template>

<script>
import axios from "axios";

export default {
 data(){
   return{
     //分頁
     currentPage: 1, // 當(dāng)前頁碼
     total: 20, // 總條數(shù)
     pageSize: 5,
     //////
     tableData:[]
   }
 },
 created() {
   this.getPageData()
 },
 methods:{
   getPageData(){
     axios.post("",{},{
       headers:{
       }
     }).then(response=>{
       this.tableData = response.data.data.records
     })
   },
   getSearchPage() {
     axios.post("",{name:`${this.search}`},{
       headers:{
       }
     }).then(response=>{
       this.tableData=response.data.data.records
     })
   },
   changePageSize(pageSize) {
     this.currentPage = 1;
     this.pageSize = pageSize;
   },
   changePageCurrent(pageNum) {
     this.currentPage = pageNum;
   },
 }
}
</script>

<style scoped>

</style>

四、結(jié)語

本片文章并沒有給出api地址,提供一個思路,所以上述代碼只是為了提供一個思路,在post請求訪問api的時候,需要注意的是一定要寫入?yún)?shù),如{id,name},沒有參數(shù),post請求發(fā)送失敗。搜索的實現(xiàn)也是,只不過搜索的實現(xiàn)是通過獲取到input輸入框里面的關(guān)鍵詞,賦值給post請求傳入?yún)?shù)里面的api的變量,這樣post請求發(fā)送之后就只會拿到和關(guān)鍵詞相關(guān)的數(shù)據(jù)。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多