简易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 相关文章推荐
JQuery对checkbox操作 (循环获取)
May 20 Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 Javascript
jquery提示效果实例分析
Nov 25 Javascript
谷歌浏览器调试JavaScript小技巧
Dec 29 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
Oct 25 Javascript
JS仿hao123导航页面图片轮播效果
Sep 01 Javascript
JS实现仿PS的调色板效果完整实例
Dec 21 Javascript
简单实现js悬浮导航效果
Feb 05 Javascript
Vue.use源码分析
Apr 22 Javascript
JScript实现地址选择功能
Aug 15 Javascript
在Vue组件上动态添加和删除属性方法
Feb 23 Javascript
vue ssr 指南详读
Jun 29 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
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
py2exe 编译ico图标的代码
2013/03/08 Python
怎样使用Python脚本日志功能
2016/08/14 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
TensorFlow损失函数专题详解
2018/04/26 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
技术总监个人的自我评价范文
2013/12/18 职场文书
捐助倡议书范文
2014/04/15 职场文书
参赛口号
2014/06/16 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
什么是Python装饰器?如何定义和使用?
2022/04/11 Python