启动 命令 npm run dev
定义一个子组件 # 子组件 <template> <div id="zu"> <!--逻辑介绍:1、子组件中显示页码 2、将当前页码的值通过$emit方法传递到父组件--> <button @click="sub_page">上一页</button> <!--每一页的页码数,点击每一页出每一页的内容--> <button v-for="i in page_range" @click="get_page(i)">{{i}}</button> <button @click="mul_page">下一页</button> </div> </template> <script> export default { name: "zu", data:function () { return { //定义当前页码数的位置 current_page:2 } }, //子组件接收父组件的参数,用props接收(列表) props:['num_pages','page_range'], methods:{ //点击上一页 -1 ,判断如果为第一页的时候,则结束-1 sub_page:function () { if(this.current_page == 1){ return; } this.current_page -= 1; // 将当前的页数封装到一个参数里传递过去 let data = { 'page_num':this.current_page }; //子组件向父组件传参用this.$emit,有俩个参数一个是('点击事件的日志','传递的内容') this.$emit('change_page',data) }, //点击下一页进行 +1 mul_page:function () { //在这一块我们需要从后台获取最大分页的次数 if(this.current_page == this.num_pages){ return; } this.current_page += 1; // 将当前的页数封装到一个参数里传递过去 let data = { 'page_num':this.current_page }; //子组件向父组件传参用this.$emit,有俩个参数一个是('点击事件的日志','传递的内容') this.$emit('change_page',data) }, // 当前点击页码的变化值 get_page:function (i) { //需要获取到后台page_range的每个数值 this.current_page = i; // 将当前的页数封装到一个参数里传递过去 let data = { 'page_num':this.current_page }; //子组件向父组件传参用this.$emit,有俩个参数一个是('点击事件的日志','传递的内容') this.$emit('change_page',data) }, } } </script> 定义一个父组件 # 父组件 <template> <div id="showgoods"> # 用表格渲染页面 <table border="1"> <tr> <td>商品名称</td> <td>商品价格</td> <td>商品图片</td> <td>所属分类</td> </tr> <tr v-for="i in goodslist"> <td>{{i.name}}</td> <td>{{i.price}}</td> <td><img :src="i.image_url" width="100" height="100"> </td> <td>{{i.naem}}</td> </tr> </table> <h1>第{{page_num}}页</h1> <!--向子组件传参的用以下方法--> // @change_page点击传递的日志,就出触发get_num方法 <zu @change_page="get_num" :num_pages="num_pages" :page_range="page_range"></zu> </div> </template> <script> //组件嵌套导入子组件,显示在页面 import zu from '@/components/zu' export default { name: "showgoods", // 组件关联进来 components:{ zu:zu }, data:function () { return { //定义所需要用到的参数 page_range:[], num_pages:'', page_num:1, goodslist:[], } }, methods:{ //将传递的第一个参数作为点击事件,@change_page="get_num",data作为参数,将data中的当前页码参数赋值给page_num get_num:function (data) { this.page_num = data.page_num; //在methods请求点击接口,获取所有内容 this.axios({ url:'/api/goodslist/?page_num='+this.page_num, method: 'get', }).then(res=>{ console.log(res) if(res.data.code==200){ this.goodslist = res.data.message; } }) } }, //钩子函数,在我们进入页面首先要渲染第一页数据所以--以下 mounted() { //在钩子函数中,请求接口,把当前页码的内容,总页码数,一共多少页,获取到。 this.axios({ url:'/api/goodslist/', method:'get', }).then(res=>{ console.log(res); if(res.data.code==200){ console.log(res); //把当前页码的内容获取到。 this.goodslist = res.data.message; //把当前页码的总页码数获取到。 this.num_pages = res.data.num_pages; //把当前页码的一共多少页,获取到。 this.page_range = res.data.page_range; } }).catch(err=>{ console.log(err) }) }, } </script>