组件案例-发表评论功能的实现|学习笔记

简介: 快速学习组件案例-发表评论功能的实现

开发者学堂课程【Vue.js 入门与实战组件案例-发表评论功能的实现学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/586/detail/8187


组件案例-发表评论功能的实现


内容介绍

一、创建内容

二、将内容渲染为一个列表

三、制作评论发表框

四、制作评论发表按钮

五、实现发表评论功能

六、分析发表评论的业务逻辑

 

本节主要先做一个小的练习,学习如何实现评论列表,假设有一个页面,下面想设置一个评论列表,用来显示用户评论了什么内容,最上面设置一个发表的框用来写发表的内容,同时还有一个评论的按钮。

同时想要通过本地存贮来保存这些评论的内容。,代码如下:

 

一、创建内容:

首先,需要先创建一些可用的数据:

//创建Vue实例,得到ViewModel  

Var vm = new Vue({el:’#app’,data: {  List: [{ id:Date.now(),user:’李白’,content:’天生我材必有用’){ id:Date.now(),user:’江小白’,content:’劝君更尽一杯酒’){ id:Date.now(),user:’小马’,content:’我姓马,风吹草地见牛羊的马’)      ]},methods:{},components:{  ‘cmt-box’} }); </script></body> </html>

 

二、将内容渲染为一个列表:

刚才已经创建好了表格内容,现在需要将以上内容渲染成为一个列表,使用如下代码:

<!DOCTYPE html>

<html lang=”en”>

<head>

 <meta charset=”UTF-8”>

<meta name=”viewport” content = ”width = device-width , initial-scale=1.0”>

<meta http-equiv=”X-UA-Compatible”content=”ie=edge”>

 <title>Document</title>

 <script src=”./lib/vua-2.4.0.js”></script>

 <link rel=”stylesheet” href=”./lib/bootstrap-3.3.7css”>

</head>

<body>

<div id=”app”>

<ul class=”list-group”>

<li class=”list-group-item” v-for=”item in list”:key=”item。id”>

<span class=”badge”>评论人:{{ item.user }}</span>

Item 1

</li>

<ul>

此时保存,右键浏览,可以看到以下执行结果:

image.png

 

三、制作评论发表框

除了能够直接写之外,也可以把发表评论的框定义为一个组件,组件定义的好处是可以把页面经常使用的内容抽离出来,方便使用,此时定义组件需要用以下代码:

var commentBox = {

  Template:’#tmp1’

}

<template id=”tmpl”>

<div>

<div class=”form-group”>

<label>评论人:</label>

<input type =”text” class =”form-control”v -model = ”user”>

</div>

<div class=”form-group”>

<label>评论内容:</label>

<textarea class=”form-group”>,</textarea >

  </div>

此时保存刷新,会发现,执行并看不到任何效果,原因在于当前的commentBox 并没有注册为一个组件,而是定义为了一个自变量,接下来把 commentBox 定义为一个 vm 的子组件,代码为:

methods:{},Componente:{  ‘cmt-box’:commentBox

此时,刷新,可以看到执行结果:

image.png

 

四、制作评论发表按钮

经过以上部分,现在只剩下最后一个步骤,就是制作评论发表按钮,代码如下:

刷新,可以看到已经可以显示。

 <div class=”form-group”> <input type=”button” value=”发表评论”class=”btn btn-primary”


五、实现发表评论功能

接下来需要实现评论发表的功能,通过点击评论按钮,把评论人和评论内容放到 list 当中即可。代码如下:

<div class=”form-group”>

<label>评论内容:</label>

<input type= ”text”class = ”form-control ”v-model =”user”>

</div>

<div class=”form-group”>

<label>评论内容:</label>

<textarea class = ”form-control”v-model = ”content ”>

</textarea >

<div class=”form-group”>

<input type=”button” value=”发表评论”class=”btn btn-primary”@click=”postComment”>

<div>

以上代码需要定义到:

var commentBox = {

 data(){

return {

user:’’,

content:’’

}

},

 template:’#tmpl’,

 methods:{

postComment(){ //发表评论的方法

此时保存刷新,右键查看,可以正常执行且没有报错。

 

六、分析发表评论的业务逻辑

//分析:发表评论的业务数据对象

//1.评论数据存在哪里--存放在了localStorage中localStorage,setItem(‘cmts’,‘’)

//2.先组织一个最新的评论数据对象

//3.想办法把第二步中得到的评论数据对象保存到localStorage中:

//3.1 localStorage只支持存放字符串数据,要先调用JSON.stringify

//3.2在保存最新的评论数据之前,要先从localStorage获取到之前的评论数据(string),转换为一个数据对象,然后把最新的评论放在这个数组

//3.3如果获取到的localStorage中的评论字符串,为空不存在,则可以返回一个‘【】’让JSON.parse去转换

//3.4把最新的评论列表数组,再次调用JSON.stringify转为数据字符串,然后调用localStorage。setItem()

var comment = { id: Date.now().user: this . user, content : this.content }

//从localStorage中获取所有的评论

var list=JSON,parse(localStorage.getItem(‘cmts’)’[]’)

list.push(comment)

//重新保存最新的评论数据

localStorage.setItem(‘cmta’,JSON.stringify(list))

this.user=this.content=’’

}

此时刷新执行,可以正常使用。但同时,因为一般最新的评论,都在最上方显示,所以应该把上面的 list.push(comment)改成, list.unshift(comment)此时执行,可以看到最新评论已置顶。

 

 

相关文章
|
敏捷开发 存储 JavaScript
基于Vue框架的思源新闻发布平台设计与实现(论文+源码)_kaic
经过针对全校随机抽取的100名学生进行的研究发现,有约69%的学生,并不关心思源新闻,一些学生表示思源每天发生的大小事与他们无关。这项调查突显了需要提供一个能激发学生对思源校园新闻感兴趣的平台。因此本文为思源学院全院师生设计一个基于Vue框架的思源新闻发布平台,以解决校园新闻发布的不便利和信息化程度不高的问题。 本课题主要对基于Vue框架的思源新闻发布平台网站的设计与开发进行研究。论文首先描述了课题的研究背景、目的和意义,然后通过可行性分析和需求分析确定了系统开发方向。思源新闻发布平台主要采用了敏捷开发方法,通过不断迭代和反馈,不断完善系统功能和界面设计。在技术选型上,本系统采用了MySQL数
|
前端开发
前端学习笔记202303学习笔记第五天-组件的三个组成部分 原
前端学习笔记202303学习笔记第五天-组件的三个组成部分 原
70 0
|
前端开发
前端学习笔记202304学习笔记第九天-lerna简介和重点1
前端学习笔记202304学习笔记第九天-lerna简介和重点1
67 0
|
前端开发
前端学习笔记202304学习笔记第九天-lerna简介和重点2
前端学习笔记202304学习笔记第九天-lerna简介和重点2
66 0
|
前端开发
前端学习笔记202304学习笔记第九天-lema发布流程1
前端学习笔记202304学习笔记第九天-lema发布流程1
61 0
|
前端开发
前端学习笔记202304学习笔记第九天-lema发布流程2
前端学习笔记202304学习笔记第九天-lema发布流程2
61 0
|
消息中间件 存储 缓存
仿牛客社区项目(第四章)(上)
仿牛客社区项目(第四章)(上)
76 0
仿牛客社区项目(第四章)(上)
|
存储 缓存 NoSQL
仿牛客社区项目(第四章)(下)
仿牛客社区项目(第四章)(下)
101 0
仿牛客社区项目(第四章)(下)
|
存储 缓存 NoSQL
仿牛客社区项目(第四章)(总)
仿牛客社区项目(第四章)(总)
193 0
仿牛客社区项目(第四章)(总)
|
程序员 编译器 C++
C++(入门、核心、提高三篇)总结及补充
C++(入门、核心、提高三篇)总结及补充
112 0
C++(入门、核心、提高三篇)总结及补充