简易Vue评论框架的实现(父组件的实现)


Posted in Javascript onJanuary 08, 2018

最近看到一个需求:

  1. 实现一个评论功能,要求对评论列表进行分页显示
  2. 对相应模块实现组件化
  3. 能显示发布者、发布时间以及内容

乍一看不是很难,但是在具体的实现上还是遇到了一些问题。此外,因为第一次使用 vue ,看文档看的也是一脸懵逼,话不多说,下面来分析一下,具体每个模块是怎么实现的。

源码地址

评论表单代码:

<!-- 文档结构区开始 -->
<template>
  <div id="comment" >
    <UserDiv @transferUser="getInput" ></UserDiv>
    <CommentDiv :List="List"></CommentDiv>
    <PageDiv @transferUser="getPage" :totalCount="totalCount" :currentPage="currentPage"></PageDiv>
  </div>
</template>
<!-- 文档结构区结束 -->
<!-- js 控制区开始 -->
<script>
//引入组件 commentInput、commentList、pagination
import UserDiv from './commentInput.vue'
import PageDiv from './pagination.vue'
import CommentDiv from './commentList.vue'

export default {
  //声明组件名
  name: 'comment',

  //包含实例可用组件的哈希表
  components: {
    UserDiv,
    PageDiv,
    CommentDiv
  },

  //声明组件参数
  data() {
    return {
      totalCount: 0,
      currentPage: 1,
      pagesize: 3,
      totalData: [],
      List: [],
    }
  },

  methods: {
    //显示评论列表信息的方法
    getInput(msg) {
      //将评论信息保存到评论数组里
      this.totalData.push({ text: msg })
      //计算评论信息总条数长度
      this.totalCount = this.totalData.length

      //判断评论总数是否大于单页显示条数
      if (this.totalCount <= this.pagesize) {
       // 显示所有评论
       this.List = this.totalData
      } else {
       // 截取totalData中 this.totalCount - this.pagesize 后面的元素进行显示
       this.List = this.totalData.slice(this.totalCount - this.pagesize)
      }
      //点击评论按钮,默认跳转显示第一页内容
      this.currentPage = 1
      //评论列表倒序显示,即最新评论,显示在最上面
      this.List.reverse()

    },

    // 计算评论列表每一页的显示内容
    getPage(curr, size) {
      this.currentPage = curr

      if (this.totalCount <= this.pagesize) {
        //显示所有评论
        this.List = this.totalData
      } else {
        var start = this.totalCount - this.currentPage * this.pagesize
        if (start < 0) { start = 0 }
        // 截取totalData中 [start, start + this.pagesize] 位元素进行显示
        this.List = this.totalData.slice(start, start + this.pagesize)
      }
      //评论列表倒序显示,即最新评论,显示在最上面
      this.List.reverse()
    }
  },
}
</script>
<!-- js 控制区结束 -->

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript模拟实现C# String.format函数功能代码
Nov 25 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
JavaScript前补零操作实例
Mar 11 Javascript
jQuery实现简单的日期输入格式化控件
Mar 12 Javascript
基于jquery实现瀑布流布局
Jun 28 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
Jun 24 Javascript
jQuery实现弹出窗口弹出div层的实例代码
Jan 09 Javascript
React Native验证码倒计时工具类分享
Oct 24 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
小程序:授权、登录、session_key、unionId的详解
May 15 Javascript
解决layui的input独占一行的问题
Sep 10 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
Jun 11 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
Jan 08 #Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
Jan 08 #Javascript
Vue 组件(component)教程之实现精美的日历方法示例
Jan 08 #Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 #Javascript
深入理解 webpack 文件打包机制(小结)
Jan 08 #Javascript
webpack构建的详细流程探底
Jan 08 #Javascript
详解ES6中的代理模式——Proxy
Jan 08 #Javascript
You might like
新52大事件
2020/03/03 欧美动漫
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
JS cookie中文乱码解决方法
2014/01/28 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
axios学习教程全攻略
2017/03/26 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
基于zepto.js实现登录界面
2017/10/09 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
js实现验证码干扰(静态)
2021/02/22 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
python快速排序代码实例
2013/11/21 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
python pygame实现球球大作战
2019/11/25 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
物业保安岗位职责
2014/07/02 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
天河观后感
2015/06/11 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python