当前位置: 首页 > news >正文

发送post请求渲染el-table,并实现搜索和分页功能

一、问题

使用post方法访问api,拿到数据之后,与el-teble表格进行绑定,并在搜索框中通过关键词来进行表格数据的搜索。

二、方法

本篇文章使用的是axios发送post实现的,实现步骤如下:

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

    5a3a04ed497badec3b5eba96d7be05f2.png

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

    50c1ba2f85adf0429b43535d5a539d1a.png

  3. 先写一个搜索框和搜索按钮出来

    a3d2d3642bb95d23aa7f557c3bd18114.png

  4. 使用el-table表格,这是element-ui里面的表格,所以要先引入elemeng-ui,在main.js里面引入,引入之前进行安装,在控制端中安装指令是:

    3ab9bff8426926a29ab5ae8df44ebaa4.png

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

bfe0475d021fff1cb22b731f63575e87.png

5、然后就可以使用el-table标签了

7ab6ae7d333185310be914038f6ee60d.png


:data=”tableData”,意思是表格的数据来源于tableData,所以现在要在script里面给定一个tableData列表

60cc6942834b435c7a3b123894523261.png


表格中每一列的数据是通过prop来进行绑定的,因为要使用到api的数据,所以这里prop的命名要与api相对应的数据命名一样,这里写了两列。分别是id和name

368d29fca0acfd779576d8548ebc7166.png

6、写方法函数进行post请求拿到api里面的数据

8e6b612de507f0f86fd358ab3b7a8f0f.png


methods里面就用来放方法,created是vue里面的一个生命周期钩子函数,vue实例被生成之后就会调用这个函数,换言之,页面初始化的时候调用这个函6.1、写入方法getPageData
1485cefc31b41d3f633f78f8469af960.png
6.2、使用axios发送post请求

cfd323827c2bebde69f1373ccfa10dfe.png


里面有三个需要注意的,url就是api的地址,data通过传入的参数来进行发送post请求,config中headers就是请求的配置,拿到数据之后用response储存起来,这样response就是我们拿到的api里的数据了,拿到之后我们要把api里拿到的数据给tableData

0197e7e123ab94c67beb4f8f37c58b73.png


api里面列表数据是records,所以在给tableData的时候是把这个列表赋值给它

c7805917eb1abe4a6ff010598662fbde.png


6.3、在created里面,是页面创建的时候调用该方法

125a1f58794e73a2a152229349dc1171.png

7、将api的数据渲染到页面el-table里面
prop的命名要和api里面,你要渲染到页面上的数据命名一样,通过prop绑定之后,数据会自动识别,进行渲染。

9053b2d8852e9f1baccd9dd04124c236.png

bd1da0bee98d54f3f163050826069331.png

ab9ceec28ac5c4d2e9f280b809ed0244.png

8、实现搜索
8.1、在input里面绑定回车事件,按钮绑定点击事件,绑定回车事件时使用@keyup.enter=”查询方法名”,绑定点击事件使用@click,下图getSearchPage为搜索的方法,使用v-model获取input里面输入的值,赋值给search参数。

2ff6be76c5b009e3f777cda077139c30.png

9、搜索方法实现

定义一个search来接收input里面输入的值

c073f3ed31298b32faaf776110c11bcc.png


然后getSearchPage也是通过post请求拿到数据,但是这次是通过name来拿到数据

6797194bce445d855bc38a39aa68578f.png


search就是获取的输入框里的关键词
如果说我们输入123,那这里name就为name:”123”,这样拿到的数据就是关于123的几条数据。这样搜索功能就实现了。

10、实现el-table分页

10.1、需要定义的变量

ff1deec1ab31dde1ca101acd0cc4c8d0.png

在el-table里面添加分页代码

6f0ea602cec91965b539fd9a8d2f4640.png

10.2、在表格代码下写下分页器代码

0f22b1f0e4c478ada0622ff4afb05eb7.png

@size-change就是改变一页数据的大小

@current-change就是改变第几页,:page-size=”[1,5,10,20]”就是一页有多少条数据的选择。

83908c0cce41fe20b9a0fef01f226ee0.png

实现的效果就是如下图:

41e0ad34864a11f19800808184e59220.png

这样就实现了使用post请求拿到数据渲染到el-table上面,并且实现了分页。

三、实验结果与讨论

代码清单 1

<template>
 <div class="search">
   <input vaule="请输入关键词" 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, // 当前页码
     total: 20, // 总条数
     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>

四、结语

本片文章并没有给出api地址,提供一个思路,所以上述代码只是为了提供一个思路,在post请求访问api的时候,需要注意的是一定要写入参数,如{id,name},没有参数,post请求发送失败。搜索的实现也是,只不过搜索的实现是通过获取到input输入框里面的关键词,赋值给post请求传入参数里面的api的变量,这样post请求发送之后就只会拿到和关键词相关的数据。

相关文章:

  • [RK3568 Android11] 时间同步机制
  • 6、Mybatis-Plus wrapper的使用
  • 基于Web的爬虫系统设计与实现
  • Kubernets---配置 Pod 使用投射卷作存储
  • springcloud和分布式微服务学习笔记
  • 【“在路上”疫情信息检测】
  • `算法知识` 模意义下的乘法逆元
  • 微信小程序 | 游戏开发之接宝石箱子游戏
  • 丙烯酰氧乙基三甲基氯化铵(DAC)接枝聚苯乙烯伯胺微球微粒/聚苯乙烯包覆硅胶复合微球
  • 拿下Transformer
  • WPS-系统右键:开启后无法显示
  • C++学习笔记(1)--- 常量、数据类型、运算符
  • AI在工业机器人系统中的应用
  • mybatis一级缓存、二级缓存的意义是什么?
  • 在Github上封神的JDK源码,看完竟吊打了面试官,厉害了
  • ES6指北【2】—— 箭头函数
  • 时间复杂度分析经典问题——最大子序列和
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Android优雅地处理按钮重复点击
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Javascript基础之Array数组API
  • js
  • JS学习笔记——闭包
  • mysql 5.6 原生Online DDL解析
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • python学习笔记 - ThreadLocal
  • Redash本地开发环境搭建
  • win10下安装mysql5.7
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 浮动相关
  • 解析 Webpack中import、require、按需加载的执行过程
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 聊聊flink的TableFactory
  • 排序算法学习笔记
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 写代码的正确姿势
  • 自动记录MySQL慢查询快照脚本
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (二)构建dubbo分布式平台-平台功能导图
  • (四)Linux Shell编程——输入输出重定向
  • (算法)N皇后问题
  • (一)Java算法:二分查找
  • (原)Matlab的svmtrain和svmclassify
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • ****三次握手和四次挥手
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET轻量级ORM组件Dapper葵花宝典