首页 > 其他分享 >学习vue3——分页(前、后端分页两种)

学习vue3——分页(前、后端分页两种)

时间:2024-08-20 11:19:16浏览次数:7  
标签:03 分页 title addTime value 学习 vue3 content id

一、前端分页

 后端将所有数据给前端,前端来实现分页

 1 <template>
 2     <div class="flex items-center justify-center mt-5">
 3             <el-pagination 
 4             background 
 5             v-model:current-page="currentPage1"
 6             v-model:page-size="pageSize1"
 7             :page-sizes="[2, 3, 4, 5]"
 8             :disabled="disabled"
 9             :background="background"
10             layout="total, sizes, prev, pager, next, jumper"
11             :total="total1"
12             @size-change="handleSizeChange"
13             @current-change="handleCurrentChange"
14             />
15         </div>
16 </template>
17 <script setup>
18 import { ref,reactive,computed } from 'vue'
19 const tableData = ref([]) // 总条数,即所有数据
20 function getData(){
21   tableData.value = [
22     {id:1,title:"title01",content:"content01","addTime":"2024-01-03"},
23     {id:2,title:"title02",content:"content02","addTime":"2024-01-03"},
24     {id:3,title:"title03",content:"content03","addTime":"2024-01-03"},
25     {id:4,title:"title04",content:"content04","addTime":"2024-01-03"},
26     {id:5,title:"title05",content:"content05","addTime":"2024-01-03"},
27     {id:6,title:"title06",content:"content01","addTime":"2024-01-03"},
28     {id:7,title:"title07",content:"content02","addTime":"2024-01-03"},
29     {id:8,title:"title08",content:"content03","addTime":"2024-01-03"},
30     {id:9,title:"title09",content:"content04","addTime":"2024-01-03"},
31     {id:10,title:"title10",content:"content05","addTime":"2024-01-03"},
32     {id:11,title:"title11",content:"content01","addTime":"2024-01-03"},
33     {id:12,title:"title12",content:"content02","addTime":"2024-01-03"},
34     {id:13,title:"title13",content:"content03","addTime":"2024-01-03"},
35     {id:14,title:"title14",content:"content04","addTime":"2024-01-03"},
36     {id:15,title:"title15",content:"content05","addTime":"2024-01-03"},
37 
38   ]
39   total1.value=tableData.value.length
40 }
41 
42 
43 /////// 前端分页 //////
44 
45 const currentPage1 = ref(1) // 当前页码
46 const pageSize1 = ref(2)  // 选择每页几条
47 const total1 = ref(0)
48 const background = ref(false)
49 const disabled = ref(false)
50 const pageData = ref([])
51 
52 // 分页逻辑
53 function getPageDatas() {
54   pageData.value = []
55   console.log(pageSize1.value)
56   for (let i =  (currentPage1.value - 1) * pageSize1.value; i < tableData.value.length; i++) {
57     // console.log(tableData.value[i])
58     pageData.value.push(tableData.value[i])
59     if (pageData.value.length === pageSize1.value) break;
60   }
61   console.log(pageData.value)
62 }
63 
64 
65 const handleSizeChange = (val) => {
66   console.log(`${val} items per page`)
67   pageSize1.value = val;
68   currentPage1.value = 1; // 选择每页几条时,自动打到第一页重新计算数据
69   getPageDatas() 
70 }
71 const handleCurrentChange = (val) => {
72   console.log(`current page: ${val}`)
73   currentPage1.value = val;
74   getPageDatas()
75 }
76 
77 getData() // 加载全部数据
78 getPageDatas() // 根据分页逻辑,添加分页的数据,页面上真实展示的数据
79 </script>

 

二、后端分页

 前端将分页信息传给后端,后端来返回数据

 1 def getImageClassList(request):
 2     response = {}
 3     page = request.GET.get("page")
 4     limit = request.GET.get("limit")
 5     print(page,limit)
 6     ls2 = imgCagery.objects.all().order_by("-imgOrder")
 7     if ls2:
 8         ls2 = json.loads(serializers.serialize("json", ls2))
 9         # {'model': 'book.imgcagery', 'pk': 1, 'fields': {'name': '生鲜', 'imgOrder': '1'}},
10         print(ls2)
11         # ls2 = [{"id":1,"name":"家电"},{"id":2,"name":"服饰"},{"id":3,"name":"生鲜"},{"id":4,"name":"饮品"},{"id":5,"name":"母婴"}]
12         page = int(page)   # 当前页
13         limit = int(limit) # 每页几条
14         index = page*limit
15         # 分页
16         if page == 1:
17             response["list"] = ls2[:index]
18         else:
19             response["list"] = ls2[index - limit:index]
20     else:
21 
22         response["list"] = []
23 
24     response["totalCount"] = len(ls2)
25     return JsonResponse(response)

 

标签:03,分页,title,addTime,value,学习,vue3,content,id
From: https://www.cnblogs.com/zhang-dan/p/18369090

相关文章

  • 学习文件IO,让你从操作系统内核的角度去理解输入和输出(理论篇)
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • 学习机器学习的先验知识
    微积分反向传播算法蟒蛇编程区分蟒蛇函数的Positional和Keyword参数。Set(创建,访问和迭代)列表理解(ListComprehension):下列两行代码是等价的。后者(ListComp)可读性更高。1squares=list(map(lambdax:x**2,range(10)))2squares=[x**2forxinrange(10)]View......
  • CSS学习笔记
    CSS(CascadingStyleSheet)层叠级联样式表CSS:表现(美化网页)字体、颜色、边距、高度、宽度、背景图片、网页定位、网页浮动……建议HTML和CSS分开写 CSS的优势:内容和表现分离网页结构表现统一,可以实现复用样式十分丰富建议使用独立HTML的CSS文件利用SEO,容易被搜索引擎收......
  • 可以不上班,但一定要学习!赚钱往往都是从你的一技之长得来的!AI赋予的时代
    如何在AI时代找到自己的搞钱新方向。ChatGPT火不是没有它的道理的。有人玩梗调戏它,有人担心被它取代。但你们有没有想过,其实AI可以更好的帮助我们搞钱的、自由的一个重要工具呢?没错,就在有些人还在担心饭碗被AI抢走的时候,已经有精明的人开始用AI赚钱了。今天大家分享一......
  • 计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析
    基于Spark的TapTap游戏数据分析系统技术栈:  -python  -django  -scrapy  -vue3  -spark  -element-plus  -echarts   功能板块:0.爬虫模块:  通过scrapy抓取taptap游戏网站数据,从分类页开始抓取全站游戏的数据1.首页......
  • TypeScript学习之旅--编译选项-tsconfig.json
    上一篇文章提到了tsconfig.json文件中的简单配置项,如include、extends、exclude,本篇文章我们了解一下编译器选择compilerOptions1、target  用来指定ts被编译为js的ES版本有固定值,例如:‘es3’ 'es5' 'es6''es2015' 'es2018'等“target”:"es2915"2、moud......
  • vue3 响应式 API:computed()
    介绍基本概念:computed()接收一个getter函数或者一个包含getter和setter函数的对象作为参数,并返回一个基于原始响应式数据计算得到的新的响应式数据对象。计算属性的值会根据其依赖的响应式数据自动更新,当依赖的数据发生变化时,计算属性的值也会自动重新计算。返......
  • LLM大语言模型学习笔记(2)
    一、RAG定义        大型语言模型(LLM)相较于传统的语言模型具有更强大的能力,然而在某些情况下,它们仍可能无法提供准确的答案。为了解决大型语言模型在生成文本时面临的一系列挑战,提高模型的性能和输出质量,研究人员提出了一种新的模型架构:检索增强生成(RAG,Retrieval-Au......
  • vue3---vite框架
    在使用VUE3的时候,可以使用vite脚手架:Vite的特点:1.快速的冷启动,不需要等待打包2.即时的热模块更新3.真正的按需编译,不用等待整个项目编译完成1、构建vite项目npminitvite@latest#初始化vite项目或者npmcreatevite@latest#创建vite项目选择Vue根据醒目需要选......
  • 深度学习加速秘籍:PyTorch torch.backends.cudnn 模块全解析
    标题:深度学习加速秘籍:PyTorchtorch.backends.cudnn模块全解析在深度学习领域,计算效率和模型性能是永恒的追求。PyTorch作为当前流行的深度学习框架之一,提供了一个强大的接口torch.backends.cudnn,用于控制CUDA深度神经网络库(cuDNN)的行为。本文将深入探讨torch.backends.cu......