一、前言

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提交,提交了之后要清空当前的文本域,然后再加载第一页的数据

转载于:https://www.cnblogs.com/xxm980617/p/10701030.html

Vue(小案例_vue+axios仿手机app)_实现用户评论相关推荐

  1. vue小案例(小黑记事本和购物车)

    vue小案例 小黑记事本小案例 <footer class="footer" ><span class="todo-count" v-if=& ...

  2. Vue小案例1:计数器

    Vue小案例1:计数器 html页面: 准备两个按钮分别绑定两个事件对应加减add,sub:还有一个span容器放置数据,样式自己写没有太大要求 <div id="app"& ...

  3. 一周新闻纵览:房产行业成侵害个人信息高发领域;小心高仿手机APP;

    我荒废了时间,时间便把我给废了 -- 莎士比亚 房产行业成侵害个人信息高发领域 国家市场监管总局执法稽查局局长杨红灿近日说,从案件查办看,房产租售.装饰装修.教育培训成为侵害消费者个人信息违法行为的三 ...

  4. 分析初识vue小案例

    前言 我们已经写好了一个案例:初识vue小案例 接下来我们就分析初识vue小案例 容器和vue实例是一一对应的! 容器和vue实例应该是一一对应的,不允许出现一对一或者一对多 下面是一个一个容器对多个 ...

  5. axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求

    作为后端攻城狮,写前端代码是一种什么体验? 相信不少人和 @Python大星 一样,有写过前端代码的经历. 记录一下,Vue 框架开发中"啼笑皆非"的故事,非专业前端人员,该案例无 ...

  6. vue-catEye - 基于Vue 2.6.7 轻仿猫眼App的单页应用

    =>点我去github 前端代码传送门 =>点我去github 后端代码传送门 关于 本人2020届大三学生,之前学了Vue之后,萌生了一个想要做一个基于Vue的全栈SPA的想法.前端用的 ...

  7. STM32作品设计:蓝牙彩灯V1.4(WS2812全彩、声控、光控、人体红外、小科语音控制、手机APP、蓝牙无线升级)

    @ 蓝牙彩灯V1.4 biliblil视频链接:https://www.bilibili.com/video/BV14L411V78b/ 资料可联系作者:2809786963 一.功能描述 1.手机A ...

  8. vue图书推荐_Vue上面向图书馆作者和最终用户的聊天社区

    vue图书推荐 维兰 (vue-land) A chat community for library authors, contributors, end users on Vue land. 一个在 ...

  9. 使用socket,实现app直播源代码用户评论功能

    最近公司在做app直播源代码,项目经理要我们用socket长连接实现在线聊天,下面是使用socket实现app直播源代码用户互动的简单原理. 代码复制粘贴可以直接运行. //首先是服务器端packag ...

最新文章

  1. 转:【小作品】STM32无线WIFI视频小车制作剖析(下)
  2. mysql 2003错误 10055_MYSQL无法连接 提示10055错误的解决方法
  3. MongoDB实现ID自增长
  4. linux 下常见启动文件配置
  5. mysql的B+树如何存储主键和数据,磁盘io和innodb页大小的一些问题
  6. A Complete List of .NET Open Source Developer Projects
  7. AndroidManifest中activity属性设置大全
  8. 设计 Redis Key
  9. P3-weixin-2.0.0版本发布(微信插件式开发框架)
  10. python 通达信公式函数,python通达信公式函数,python调用通达信数据
  11. 最新版网站推广完全手册(2007年)!
  12. 【旧】Unity学习0:开发工具选择与Unity安装(准备工作)
  13. 中级软件设计师笔记全套 看完你就过啦
  14. win10 截屏 快捷键(全屏直接保存、全屏间接保存、当前界面)
  15. CSS基础--美化视觉效果
  16. 理财投资理念黄金法则
  17. 一招教你自制“切屏”摸鱼神器
  18. 千万级并发实现的秘密:内核不是解决方案而是问题所在!
  19. YOLOv2—passthrough层
  20. set在MATLAB中什么意思,matlab中set函数怎么用,具体的,中文的?

热门文章

  1. 取 1~100之间的随机整数
  2. vue项目在IE中显示空白,报错:vuex requires a Promise polyfill in this browser
  3. 移动端点击(click)事件延迟问题的产生与解决方法
  4. 解决MPLAB X IDE的文件注释出现乱码的问题
  5. 通过Matlab发送邮件要注意的问题
  6. 【2016 Asia China-Final D题】
  7. triu--上三角矩阵的抽取
  8. AttributeError: module 'select' has no attribute 'error'解决方法
  9. qq邮箱格式的Java代码_Java实现QQ邮件发送
  10. windows自带反编译chm文件