vue+element:后端分页基本逻辑

1、前端添加【表格】【页码框】视图组件

    <!-- :data	双向绑定,指向 pageData -->
    <el-table
      stripe
      border
      style="width: 100%;margin: 0;padding: 0;"
      :data="pageDataList"
    >
      <!-- label    视图表格的字段    -->
      <!-- prop     数据模型的字段    -->
      <el-table-column label="No" type="index"> </el-table-column>
      <el-table-column label="用户名称" prop="name"> </el-table-column>
      <el-table-column label="用户电话" prop="tel"></el-table-column>
      <el-table-column label="用户邮箱" prop="email"></el-table-column>
      <el-table-column label="用户状态" prop="status"></el-table-column>
      <el-table-column label="操作">
        <template>
          <el-button type="primary" size="small" @click="test1(scope.$index, scope.row)" >查看</el-button>
          <el-button type="danger" size="small" @click="test2(scope.$index, scope.row)">进入</el-button>
        </template>
      </el-table-column>
    </el-table>
          <!-- background 页码框背景样式 -->
          <!-- layout 页码框布局样式 -->
          <!-- page-size 表格每页包含的行数 -->
          <!-- @current-change 页码切换事件,需要编写方法切换当前页码 -->
          <!-- current-page	当前页码 -->
          <!-- total	总行数 -->
          <el-pagination
            background
            layout="prev, pager, next"
            :page-size="pageSize"
            @current-change="currentChangeHandle"
            :current-page="currentPageIndex"
            :total="rowAmount">
          </el-pagination>

2、前端绑定【分页功能数据】


  data(){
    return{
      //分页功能数据
      pageSize: 5,			//每页行数
      pageDataList: [],			//当前页的数据
      pageAmount: 1,	    //总页数
      rowAmount: 1,			//总行数
      currentPageIndex: 1,	//当前页码
    }
  },

3、前端编写【分页方法】

    //根据当前页码,加载分页数据
    currentPageChangeHandle(currentPageIndex) {
      let that = this;
      //    发送请求
      this.$axios({
        method: 'get',
        url: global.baseUrl+"/admin/getUserListPageQuery",
        params: {
          pageIndex: currentPageIndex,
          pageSize: this.pageSize,
        },
      }).then(function (response) {
        // 获取页面数据信息
        that.pageData = response.data.data.dataList;
        // 获取页码信息
        that.total = response.data.data.total;
        if (null === that.pageData || that.pageData.length === 0) {
          alert("查询结果为空......")
        }
      }).catch(function (error) {
        console.log(error);
      });
    },

4、后端编写【分页工具类】:用于切割查询结果,找到对应页码的信息列表

public class PageUtil {
    //List<?> objectList 泛型类List,自动适配任何类型
    public  static GlobalControllerResponse getPageList(List<?> objectList, Integer pageIndex, Integer pageSize){
        //  查询成功,进行分页处理
        if( null != objectList && objectList.size() > 0){
            // 获取数据总量
            int total = objectList.size();
            // 当前页面第一条数据的编号:   startIndex = pageIndex * pageSize
            int startIndex = (pageIndex - 1) * pageSize;
            // 当前页面(除尾页外)最后一条数据的理论编号:    tempIndex = startIndex + pageSize
            int tempIndex = startIndex + pageSize;
            // 尾页最后一条数据的实际编号(防止编号下标越界)
            int endIndex  = tempIndex < objectList.size() ? tempIndex : objectList.size();
            // 截取当前页面数据
            objectList = objectList.subList(startIndex,endIndex);
            // 包装当前页面的数据信息和页码信息
            PageInfo<?> pageInfo = new PageInfo<>(total, objectList);
            // 包装成统一应答类型
            return new GlobalControllerResponse(pageInfo , CrudEnum.SELECT_SUCCESS);
        }
        //  查询失败,直接返回空内容
        else{
            return new GlobalControllerResponse(null , CrudEnum.SELECT_FAILED);
        }
    }
}

5、后端编写【分页信息实体类】,用于包装查询结果和页面信息,发送给前端

@Data
public class PageInfo<T> {
    //    页面信息:总数量,页码,页容量
    private Integer total;
    private Integer pageIndex;
    private Integer pageSize;
    //    信息列表:分页查询的结果
    private List<T> dataList;
    //    无参构造
    public PageInfo(){

    }
    //    有参构造
    public PageInfo(Integer total, List<T> dataList){
        this.total = total;
        this.dataList = dataList;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Element UI 是一套基于 Vue.js 的组件库,其中包含了丰富的 UI 组件,比如 Table 表格组件。在使用 Element UI 的 Table 组件进行后端分页时,需要进行以下步骤: 1. 后端准备:首先,后端需要提供一个接口来获取分页数据。这个接口应该包含获取当前页数据的逻辑,同时还需要对分页参数进行处理,比如每页数量、当前页码等。 2. 前端配置:在前端代码中,需要对 Table 组件进行配置。首先,需要设置表格的数据源为后端接口,可以使用 `:data` 属性来设置,例如 `:data="tableData"`。`tableData` 是一个变量,用来存储后端返回的数据。接着,还需要设置表格的分页属性,使用 `:pager` 属性来配置,例如 `:pager="true"`。设置为 `true` 表示启用分页功能。 3. 分页参数传递:在请求后端数据时,需要将分页相关的参数传递给后端接口。例如,可以使用 `@load="handleLoad"` 事件来触发加载数据的方法,并在该方法中将分页参数传递给后端接口。 4. 后端返回数据:后端接口收到请求后,根据传递的分页参数进行相应的处理,然后返回包含当前页数据的结果。 5. 数据渲染:前端在接收到后端返回的数据后,可以将数据显示在 Table 组件中。可以通过 `v-for` 指令来循环遍历数据,然后在相应的列上使用插值表达式将数据渲染出来。 通过以上步骤,就可以实现 Element UI Table 的后端分页功能。前端通过配置表格的数据源和分页属性,然后将分页参数传递给后端接口,后端接口根据分页参数处理数据并返回给前端,最后前端将数据渲染显示在 Table 组件中。 ### 回答2: Element UI是一款基于Vue.js的UI组件库,其中包含了很多常用的UI组件,如Table(表格)。Element UI Table组件的后端分页是指在数据量较大时,通过与后端进行交互,在前端只展示部分数据,而不是一次性加载所有数据。 要实现Element UI Table的后端分页,需要先获取到后端返回的总数据量,然后根据每页展示的数据量和当前页码向后端发送请求,获取当前页的数据。具体的步骤如下: 1. 在后端实现数据接口:后端应提供一个接口用于获取表格数据。该接口需接收参数:每页展示的数据量、当前页码,并根据这些参数返回对应的数据。 2. 在前端配置Table组件:在前端代码中,配置Table组件,并指定相应的属性,如数据源(data)、每页展示的数据量(page-size)、总数据量(total),以及当前页码(current-page)等。 3. 设置分页:在前端代码中,配置分页组件(Pagination),并指定相应的属性,如总数据量(total)、每页展示的数据量(page-size),以及当前页码(current-page)等。 4. 定义获取数据的方法:在前端代码中,定义一个方法用于向后端发送请求并获取数据。该方法应接收当前页码作为参数,并通过Axios等工具发送请求,传递相应的参数和请求头信息。 5. 分页操作:当用户切换页码时,调用获取数据的方法,并将当前页码作为参数传入,从后端获取数据并更新表格展示的数据。 通过以上步骤,就可以实现Element UI Table的后端分页功能。每次用户切换页码时,都会向后端请求数据,只展示当前页的数据,从而降低了前端的内存和渲染开销。同时,也能提高用户体验,保证了页面的加载速度和性能。 ### 回答3: Element-UI是一个基于Vue.js的组件库,它提供了一系列的UI组件,其中包括了Table组件。 Element-UI的Table组件可以支持前端分页后端分页两种方式。对于后端分页,我们需要在后端进行相应的处理来返回分页数据。 首先,在前端,我们需要使用Table组件的`data`属性来绑定后端返回的数据列表,并使用`total`属性来绑定后端返回的数据总量。 然后,在后端,我们需要根据前端传递过来的分页参数(如页码、每页条数等)来查询相应的数据,并计算出总量。然后将查询到的数据列表和总量返回给前端。 具体的后端分页实现方式会根据不同的后端技术而有所不同。 例如,对于Java后端,我们可以使用Spring Boot框架来实现后端分页。首先,在后端定义一个Controller,接收前端传递的分页参数,并调用Service层的方法进行数据查询和计算总量。然后将查询到的数据列表和总量封装成一个分页对象,并返回给前端。 ```java @RestController @RequestMapping("/api/table") public class TableController { @Autowired private TableService tableService; @GetMapping("/list") public ResultData<TableData> getList(@RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize) { List<TableItem> dataList = tableService.getDataList(pageNumber, pageSize); int total = tableService.getTotal(); TableData tableData = new TableData(dataList, total); return new ResultData<>(tableData); } } ``` 在Service层,我们可以使用MyBatis等持久层框架进行数据查询,并在查询语句中加入分页逻辑。 ```java @Service public class TableServiceImpl implements TableService { @Autowired private TableMapper tableMapper; @Override public List<TableItem> getDataList(int pageNumber, int pageSize) { PageHelper.startPage(pageNumber, pageSize); return tableMapper.selectDataList(); } @Override public int getTotal() { return tableMapper.selectTotal(); } } ``` 对于其他后端技术,可以根据相应的框架和数据库操作工具来实现后端分页逻辑。 总之,Element-UI的Table组件支持后端分页,我们需要在前端分页参数传递给后端,并在后端根据这些参数进行数据查询和计算总量,然后将查询到的数据列表和总量返回给前端

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值