目录
6.7分页器点击切换功能实现-------@current-change
6.8改变某一页显示条数,数据也进行改变------@size-change
gitee仓库地址:
https://gitee.com/CMD-UROOT/my_project/commits/master
大家根据上传历史进行查找你需要的代码
前期工作
先删除table.sj文件,因为这里获取的是假数据
我们知道下图中每一个模块都有属于自己的接口
所以我们在api文件夹下,新建一个product文件夹,里面创建四个模块
接口地址:http://39.98.123.211:8416/swagger-ui.html
我们需要分页列表这个接口/admin/product/baseTrademark/{page}/{limit}
我们还可以看到需要携带两个参数,当前页码page和每页记录数limit
1.书写tradeMark的接口
在api/product/tradeMark.js中:
2.统一对外暴露
因为这四个模块都是要对对外暴露的,所以我们统一在一个文件中对外暴露
在api/index.js中:
3. 把对外暴露的数据挂在Vue的原型上
这样做的好处是可以在任意的组件中使用这些函数
在main.js中:
4.在tradeMark组件中测试$API
在views/product/tradeMark/index.vue中:
我们先看看$API我们能否获取到
控制台:
获取成功
5.在组件中获取到数据
当组件一挂载应该获取服务器的数据,展示数据,但是获取我们这里列表的数据并不是只获取一次,当我们点击分页的按钮的时候,还需要获取相应的页数的数据进行展示,所以这个接口发请求的时候,不可能只发一次的
在views/product/tradeMark/index.vue中:
export default {
name:'tradeMark',
data(){
return {
//代表的分页器第几页
page:1,
//当前页数展示数据条数
limit:3,
}
},
//组件挂载完毕
mounted () {
// console.log(this.$API);
//获取列表数据的方法
this.getPageList()
},
methods: {
//获取品牌列表的数据
async getPageList() {
//解构出参数
const {page,limit} = this
//获取品牌列表的接口
//当你向服务器发请求的时候,这个阿含糊需要带参数,所以我们在data中初始化两个字段,代表给服务器传递参数
let result = await this.$API.trademark.reqTradeMarkList(page,limit)
console.log(result)
}
},
}
查看打印的结果:里面有我们需要的数据
code200表示成功,里面records是数组,total是我们需要的总共数据条数
数据放到组件身上:
在views/product/tradeMark/index.vue中:
export default {
name:'tradeMark',
data(){
return {
//代表的分页器第几页
page:1,
//当前页数展示数据条数
limit:3,
//总共数据条数
total:0,
//列表展示的数据
list:[]
}
},
//组件挂载完毕
mounted () {
// console.log(this.$API);
//获取列表数据的方法
this.getPageList()
},
methods: {
//获取品牌列表的数据
async getPageList() {
//解构出参数
const {page,limit} = this
//获取品牌列表的接口
//当你向服务器发请求的时候,这个阿含糊需要带参数,所以我们在data中初始化两个字段,代表给服务器传递参数
let result = await this.$API.trademark.reqTradeMarkList(page,limit)
// console.log(result)
if(result.code==200){
//分别是展示数据的总条数与列表展示的数据
this.total = result.data.total
this.list = result.data.records
}
}
},
}
上面代码新增这些:
控制台查看:
组件身上已经有数据了
6.数据展示到页面
官网查看:Element - The world's most popular Vue UI framework
6.1利用data存储数据
我们把要展示的数据放到:data中
在views/product/tradeMark/index.vue中:
效果:有表格出来了,三行,正好对应我们三组数据
6.2利用tape='index'展示序号
我们现在需要把序号展示出来,但是我们的数据中id并不能当做序号,我们就可以利用ElementUI提供的表格,有带序号的,看文档
文档地址:Element - The world's most popular Vue UI framework
在views/product/tradeMark/index.vue中:
tradeMark组件中
6.3 利用prop展示品牌名称
在views/product/tradeMark/index.vue中:
效果:
6.4 作用域插槽展示品牌LOGO
不太清楚作用域插槽的可以看我以前的文章Vue项目中常见问题(73)组件通信-作用域插槽_学无止境QAQ的博客-CSDN博客
作用域插槽:子组件的数据来源于父组件的,子组件决定不了自己的结构和外观
在views/product/tradeMark/index.vue中:
我们这样写效果:
效果:
在views/product/tradeMark/index.vue中:
利用作用域插槽回传数据,我们先看看第一和第二个参数,代表什么意思
效果:
第一个参数是每一条数据,第二个参数是对应的下标
在views/product/tradeMark/index.vue中:
给定义结构和样式:
效果:
6.5 作用域插槽展示操作
在views/product/tradeMark/index.vue中:
效果:
6.6分页器动态展示
在views/product/tradeMark/index.vue中:
修改前
修改后
效果:
6.7分页器点击切换功能实现-------@current-change
我们想要点击第几页就展示第几页的数据,触发分页器的点击事件
还是看文档:Element - The world's most popular Vue UI framework
绑定点击事件
在methods中:
效果:实现
但是我们知道我们点击无法需要再发一次请求,我们的请求其实是放在获取品牌列表的数据的那个函数中的,我们可以就用getPageList这个函数,这样可以省略一个函数
下面改变的就只有红色框中的代码,意思默认是显示第一页的,当我们点击分页器的时候,如果发生该改变,那么默认参数就失效了,就会用我们点的分页器的页码,我们点击第六页,就传第六页,然后更新数据
效果:没问题
6.8改变某一页显示条数,数据也进行改变------@size-change
效果实现: