Vue(小案例_vue+axios仿手机app)_实现用户评论
一、前言
1、渲染评论列表
2、点击加载按钮,加载更多
3、提交评论
二、主要内容
1、评论列表一般是注册到一个全局的公共组件中
2、请求后台数据,渲染评论列表
(1)数据格式如下
|
地址 |
/api/getcomments/:artid?pageindex=1 |
|
作用描述 |
根据资讯id获取它的评论的分页信息 |
|
请求方式 |
Get |
|
传入api的参数 |
artid: 资讯id,这个id是用来区分是哪一个页面中的评论数据 pageindex: 分页的页码,表示当前第几页 传入url写法: /api/getcomments/43?pageindex=1 |
|
返回数据格式 |
Json |
|
返回数据格式样例 |
|
|
|
(2)如何获取到父组件的id, 这里用到子父组件通信
a:在父组件中用自定义一个cid属性
<Comment :cid="$route.query.id" /> //获取到路由上面的id参数
b:在子组件Comment.vue中接收这个属性,然后作为Comment里面的查询参数
props:['cid'], //接收到父组件定义的自定义属性
c:根据上面接收到的自定义属性进行查询,查询到对应的评论信息
d:用户还可能输入url地址中的page来查询
data(){
return {
comments:[]
}
},
created(){
//用户在查看评论列表的时候还可能在上面输入
let page = this.$route.query.page || '1'; //从url地址中获取到当前的page,如果没有默认加载第一页
//查询的时候带着这个page查询
this.$axios.get(`getcomments/${this.cid}?pageindex=${page}`)
.then(res=>{
console.log(res.data.message);
this.comments=res.data.message;
})
.catch(err=>{
console.log('数据请求失败',err);
})
}
3、查看评论,点击加载按钮,加载更多(通常评论信息不会全部渲染到页面中的,)
(1)给按钮注册一个loadMore()方法,点击的时候传进去url地址栏中的page
<Button @click='loadMore(page)'>加载更多</Button>
(2)声明loadMore()
(3)当用户每点击一次的时候,就让当前的page++
export default{
name:'Comment',
props:['cid'],//接受父组件传过来的自定义属性
data(){
return {
comments:[],
page:1
}
},
methoods:{
loadMore(page){
this.$axios.get(`getcomments${this.cid}?pageindex=${this.page}`)
.then(res=>{
console.log(res.data.message);
this.comments=res.data.message;
if(page){
//表示加载更多,将新一页的数据追加到原来的里面
this.comments = this.comments.concat(res.data.message);
}else{
//否则第一次加载
this.comments = res.data.message;
}
this.page++;
})
.catch(err=>{
console.log('数据请求失败',err);
})
}
},
created(){
//用户在查看评论列表的时候还可能在上面输入
let page = this.$route.query.page || '1'; //
this.loadMore(page);
}
4、提交评论
(1)数据如下
|
地址 |
/api/postcomment/:artid |
|
作用描述 |
给某条资讯进行评论 |
|
请求方式 |
Post |
|
传入api的参数 |
artid: 资讯id, content: 评论的内容 传入url写法:/api/postcomment/43 请求报文体Body格式: content=评论内容 |
(2)点击提交按钮,执行提交按钮方法,并且要个文本域双向数据绑定
<li class="txt-comment">
<textarea v-model='commentContent'></textarea>
</li>
<li>
<button @click='commentHandle'>提交</button>
</li>
(3)在methods中定义
//处理提交评论请求,并且将评论信息,添加到postcomment/:${this.cid}中
commentHandle(){
this.$axios.post(`postcomment/:${this.cid}`,'conetent='+this.commentContent)
.then(res=>{
console.log(res.data.message);
})
.catch(err=>{
console.log('评论失败',err);
})
}
(4)提交评论信息之后还需要清空当前这个评论框的文本内容,然后再加载第一页数据
methoods:{
commentHandle(){
this.$axios.post(`postcomment/:${this.cid}`,'conetent='+this.commentContent)
.then(res=>{
console.log(res.data.message);
this.commentContent=''; //清空评论框
this.page=1;//然后加载第一页数据
this.loadMore();
})
.catch(err=>{
console.log('评论失败',err);
})
},
三、总结
1、查看评论,用户可能要查看其它页的评论信息,所以在请求的时候带了一个page参数
2、加载更多,用户每次点击加载更多按钮,让当前的page++, 并且将新请求到的一页的数据用concat连接到上次请求到的数据中
3、提交评论,用post提交,提交了之后要清空当前的文本域,然后再加载第一页的数据
Vue(小案例_vue+axios仿手机app)_实现用户评论的更多相关文章
- Vue(小案例_vue+axios仿手机app)_购物车(二模拟淘宝购物车页面,点击加减做出相应变化)
一.前言 在上篇购物车中,如果用户刷新了当前的页面,底部导航中的数据又会恢复为原来的: 1.解决刷新,购物车上数值不变 ...
- Vue(小案例_vue+axios仿手机app)_购物车
一.前言 1.购物车 二.主要内容 1.效果演示如下,当我们选择商品数量改变的时候,也要让购物车里面的数据改变 2.具体实现 (1)小球从上面跳到下面的效果 (2)当点击上面的“加入购物车按钮”让小球 ...
- Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)
一.前言 1.公共轮播图的实现 2.组件传参,公共组件的实现 二.主要内容 1.公共轮播图的实现 (1)分析:当渲染不同的轮 ...
- Vue(小案例_vue+axios仿手机app)_上拉加载
---恢复内容开始--- 一.前言 ...
- Vue(小案例_vue+axios仿手机app)_图片列表操作
一.前言 1.让图片还没有被完全加载出来的时候给用户提示 2.图片查看器 二.主要内容 1.让图片还没有被完全加载出来的时候 ...
- Vue(小案例_vue+axios仿手机app)_首页(底部导航栏+轮播图+九宫格)
---恢复内容开始--- 一.前言 1.底部导航(两种做法) 2.轮播图 ...
- Vue(小案例_vue+axios仿手机app)_图文列表实现
一.前言 1.导航滑动实现 2.渲染列表信息时让一开始加载的时候就请求数据 3.根据路由的改变,加载图文的改变(实现用户访问网站时可能执行的三个操作) 二.主要内容 1.导航滑动实现: (1)演示 ...
- Vue(小案例_vue+axios仿手机app)_购物车(计算商品总金额)
一.前言 1.计算总金额 2.点击删除按钮,删除对应的商品信息 3.当还没结算的时候,当用户跳到其他页面 ...
- Vue(小案例_vue+axios仿手机app)_Vuex优化购物车功能
一.前言 1.用vuex实现加入购物车操作 2.购物车详情页面 3.点击删除按钮,删除购物详情页面里的对应商品 二.主要内容 1.用vuex加入购物车 (1)在src ...
随机推荐
- 最小生成树(Prim算法)
Java实现Prim算法 package com.java; import java.util.*; /** * 普里姆算法—Prim算法 * 算法思路:将图中所有的顶点分为两类:树顶点(已被选入生成 ...
- C语言运行库翻译
这是从Visual C++ 6里面的C语言部分翻译过来. http://files.cnblogs.com/files/sishenzaixian/C运行库.zip
- HBase2.0中的Benchmark工具 — PerformanceEvaluation
简介 在项目开发过程中,我们经常需要一些benchmark工具来对系统进行压测,以获得系统的性能参数,极限吞吐等等指标. 而在HBase中,就自带了一个benchmark工具—PerformanceE ...
- Hive:ORC File Format存储格式详解
一.定义 ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化. 据官方文档介绍,这种文件格式可以提供一种高效的方法来存储 ...
- 基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件
目录 1. 前言 2. 关于vue-simple-uploader 3. 基于vue-simple-uploader封装全局上传组件 4. 文件上传流程概览 5. 文件分片 6. MD5的计算过程 7 ...
- Swagger 配置
放行 , 不拦截. @Configuration open class MyWebMvcConfig : WebMvcConfigurationSupport() { override fun add ...
- Python--day04(流程控制)
day03主要内容回顾 1.变量名命名规范 -- 1.只能由数字.字母 及 _ 组成 -- 2.不能以数字开头 -- 3.不能与系统关键字重名 -- 4._开头有特殊含义 -- 5.__开头__结尾的 ...
- day02(编程语言,解释器,环境变量,执行方式,pycharm,pip,变量三大组成)
上节课复习: 重点: 1,进制转换:二进制与十六进制 2,内存分布:栈区 与 堆区 10101001110111 => 2a77 abf1 => 1010101111110001 计算 ...
- iview 无法缓存的问题
- 控制结构(6): 最近最少使用(LRU)
// 上一篇:必经之地(using) // 下一篇:程序计数器(PC) 基于语言提供的基本控制结构,更好地组织和表达程序,需要良好的控制结构. There are only two hard thin ...