前端vue实现答题功能(前端实现分页)

线上的答题基本都要前端来实现分页功能,展示完一页,答完加载下一条,工作中遇见这样的需求,简单写了一个demo记录下

先来个效果图看看吧

功能需求:

1. 前端实现分页,完成线上答题

2.显示当前答题的进度状态

首先html  代码模块

      <view class="subject-box">
        <view class="box-item-title">
          <div class="item-title-text">你未来的老公什么样</div>
        </view>
        <view class="item-info-box">
          <view class="info-box-hr"></view>
          <view class="info-box-center"> 测测你未来老公什么样吧 </view>
          <view class="info-box-hr"></view>
        </view>
        <view v-for="(item, index) in initData" in :key="index" class="list-view">
          <view class="subject-title">
            <view class="title-box">
              <view class="title-top">
                <view class="top-left">
                  <view class="title-text">{{ item.title }}</view>
                </view>
                <view class="top-right">
                  <text class="left">{{ contPage + 1 }}</text
                  ><text class="right">/{{ dataList.length }}</text>
                </view>
              </view>
            </view>
          </view>
          <view class="subject-item">
            <view
              class="item-li"
              :class="{ isLiActive: Number(liNum) === indexs }"
              v-for="(items, indexs) in item.children"
              :key="indexs"
              @click="handleItemClick(item, items, indexs)"
            >
              {{ items.sort }}
            </view>
          </view>
        </view>
      </view>

声明变量

 return {
      id: "",
      name: "",
      formData: {
        problemId: "", //题目id
        ageType:"",
       
        num: 0,
      },
      dataList: [
        {
          id: "0",
          title: "1.请选择您最喜欢的年龄阶段",
          children: [
            {pordId:"0", sort: "18-28" },
            { pordId:"1", sort: "28-38" },
            { pordId:"2", sort: "38-48" },
            {pordId:"3",  sort: "48以上" },
          ],
        },
        {
          id: "1",
          title: "请选择您喜欢的体型",
          children: [
            {pordId:"0",  sort: "肉壮" },
            { pordId:"1", sort: "肌肉" },
            { pordId:"2", sort: "清瘦" },
            {pordId:"3",  sort: "健壮" },
            { pordId:"4", sort: "胖" },
            { pordId:"5", sort: "微胖" },
            { pordId:"6", sort: "微胖" },
          ],
        },
      ],
      num: 0,
      pageSize: 1, //每页显示数量
      pageNum: 1, //共几页
      contPage: 0, //默认显示当前第一页
      totals: [],
      initData: [],
      dataFont: "",
      liNum: 10,

      pageNote: 7,
      pageInit: 1,
      currentInit: 0,
      initPage: [],
      initList: [],
      dataInit: "",

      cnum: 0,
      ccnum: 0,
    };

js模块

  init() {
      if (this.dataList.length > 0) {
        this.pageNum = Math.ceil(this.dataList.length / this.pageSize) || 1;

        for (let i = 0; i < this.pageNum; i++) {
          this.totals[i] = this.dataList.slice(
            this.pageSize * i,
            this.pageSize * (i + 1)
          );
          console.log(this.totals[i]);
        }
        this.dataFont = this.totals[this.contPage];
        console.log(this.dataFont);
        this.initData = JSON.parse(JSON.stringify(this.dataFont));

        for (let h = 0; h < this.totals.length; h++) {
          this.totals[h][0].isPageShow = parseInt(
            this.totals[h][0].isCorrect
          );
        }
        this.infoList();
      }
    },
    infoList() {
      this.pageInit = Math.ceil(this.totals.length / this.pageNote) || 1;
      for (let i = 0; i < this.pageInit; i++) {
        this.initPage[i] = this.totals.slice(
          this.pageNote * i,
          this.pageNote * (i + 1)
        );
        console.log(this.initPage[i]);
      }
      this.dataInit = this.initPage[this.currentInit];
      console.log(this.dataInit);
      this.initList = JSON.parse(JSON.stringify(this.dataInit));
     
    },

                

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue前端分页功能可以通过Element UI来实现。Element UI是一套基于Vue.js的桌面端组件库,提供了丰富的组件和工具,包括分页组件。 首先,在Vue项目中使用npm安装Element UI: npm install element-ui 然后,在项目的入口文件main.js中引入Element UI的样式和组件: import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) 现在,你可以在需要分页的组件中使用Element UI的分页组件了。以下是一个示例: <template> <div> <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, jumper" :total="total"> </el-pagination> </div> </template> <script> export default { data() { return { currentPage: 1, // 当前页码 pageSize: 10, // 每页显示的条数 total: 100, // 总记录数 } }, methods: { handleSizeChange(val) { this.pageSize = val this.currentPage = 1 // 当改变每页显示的条数时,重置当前页码为1 // 并重新获取数据 this.getData() }, handleCurrentChange(val) { this.currentPage = val // 当改变当前页码时,重新获取数据 this.getData() }, getData() { // 根据当前页码和每页显示的条数,发送请求获取数据 }, }, } </script> 通过监听分页组件的size-change事件和current-change事件,我们可以获取到用户改变每页显示的条数和当前页码的操作。 当用户改变每页显示的条数时,我们可以将当前页码重置为1,并重新发送请求获取数据。 当用户改变当前页码时,我们重新发送请求获取数据。 在getData方法中,可以根据当前页码和每页显示的条数,发送请求获取相应的数据。最后,将获取到的数据渲染到页面中。 这样,通过使用Element UI的分页组件,我们就可以实现Vue前端分页功能了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值