后端未做分页,前端进行分页(采用element.ui pagination组件,vue框架)

后端未做分页,前端进行分页(采用element.ui pagination组件,vue框架)

1.data中定义私有数据,进行数据的接收和设定。

  data() {
    return {
        // 权限列表
        rightsList: [],//后台返回的所有结果
        currentPage: 1, //当前页
        pageSize: 20, //当前页容量
        total: null, //总数
    }
  },

2.定义的方法
getRightsList函数拿到发起请求数据,进行数据的接收

  methods: {
    // 获取权限列表
    async getRightsList() {
      const { data: res } = await this.$http.get('rights/list')
      if (res.meta.status !== 200) {
        return this.$message.error("获取权限列表失败!")
      }
       this.rightsList = res.data
       this.total = res.data.length;//总条数
      //  console.log(this.rightsList);
      },
      handleSizeChange(val) {//切换每页条数容量
     console.log('每页:${val}条');
      this.pageSize = val;
      this.getRightsList();
    },
    handleCurrentChange(val) {//切换当前页
      console.log('当前:页${val}条');
      this.currentPage = val;
      this.getRightsList();
      }
  }

3.分页区代码设置

     <!-- 分页区域 -->
   <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-sizes="[10,20,30]"
      :page-size="pageSize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="total">
    </el-pagination>

4.重点 :data=“rightsList.slice((currentPage-1)pageSize,currentPagepageSize)”
data接受的是slice()函数处理后的对象

   <!-- 卡片视图 -->
    <el-card>
      <el-table :data="rightsList.slice((currentPage-1)*pageSize,currentPage*pageSize)" border stripe>
      <el-table-column type="index"></el-table-column>
      <el-table-column label="权限名称" prop="authName"></el-table-column>
      <el-table-column label="路径" prop="path"></el-table-column>
      <el-table-column label="权限等级" prop="level">
      <template slot-scope="scope">
          <el-tag v-if="scope.row.level === '0'">一级</el-tag>
          <el-tag type="success" v-else-if="scope.row.level === '1'">二级</el-tag>
          <el-tag type="warning" v-else>三级</el-tag>
      </template>
      </el-table-column>
      </el-table>
    </el-card>

5.定义和用法
slice() 方法可从已有的数组中返回选定的元素。
slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
注意: slice() 方法不会改变原始数组。

6.语法
array.slice(start, end)

7.参数Values
参数描述
start 可选。规定从何处开始选取。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
在这里插入图片描述
欢迎讨论

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用 Element UIPagination 组件结合 Vue 来实现表格的分页功能。对于后台一次返回所有数据的情况,前端可以根据当前页码和每页显示的条数来进行数据分页处理。 首先,在 Vue 的模板中,你需要使用 Pagination 组件来展示分页信息,并绑定相应的属性和事件。 ```html <template> <div> <el-table :data="tableData.slice(startIndex, endIndex)"> <!-- 表格列定义 --> </el-table> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="sizes,prev,pager,next,total" :total="tableData.length"> </el-pagination> </div> </template> ``` 然后,在 Vue 的 script 部分,你需要定义相关属性和事件处理函数。 ```javascript <script> export default { data() { return { tableData: [], // 所有数据 currentPage: 1, // 当前页码 pageSize: 10, // 每页显示的条数 }; }, computed: { startIndex() { return (this.currentPage - 1) * this.pageSize; }, endIndex() { return this.currentPage * this.pageSize; }, }, methods: { handleSizeChange(val) { this.pageSize = val; this.currentPage = 1; // 切换每页显示条数后,重置当前页码为第一页 }, handleCurrentChange(val) { this.currentPage = val; }, }, }; </script> ``` 这样,当用户切换每页显示的条数或者点击页码时,Vue 会根据当前页码和每页显示的条数来计算需要展示的数据范围,并更新表格的内容。注意,`tableData.slice(startIndex, endIndex)` 可以根据当前页码进行切片操作,只显示对应页码的数据。 请确保在获取到所有数据后,将数据赋值给 `tableData` 属性。你可以通过后台接口获取所有数据,然后在前端进行分页处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值