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

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

开发者学堂课程【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)此时执行,可以看到最新评论已置顶。

 

 

相关文章
|
3月前
|
前端开发
问题解答:SAP UI5 应用设置禁止被其他应用嵌入运行的工作原理解析试读版
问题解答:SAP UI5 应用设置禁止被其他应用嵌入运行的工作原理解析试读版
113 0
|
8月前
|
JSON BI 数据库
通过一个具体的例子,讲解 SAP BDC 技术的使用步骤试读版
通过一个具体的例子,讲解 SAP BDC 技术的使用步骤试读版
73 0
|
11月前
|
前端开发
前端学习笔记202303学习笔记第五天-组件的三个组成部分 原
前端学习笔记202303学习笔记第五天-组件的三个组成部分 原
55 0
|
前端开发
前端知识案例-图的简介
前端知识案例-图的简介
41 0
前端知识案例-图的简介
|
程序员 编译器 C++
C++(入门、核心、提高三篇)总结及补充
C++(入门、核心、提高三篇)总结及补充
C++(入门、核心、提高三篇)总结及补充
|
JavaScript 开发者
组件案例-实现评论的发表和自动刷新列表|学习笔记
快速学习组件案例-实现评论的发表和自动刷新列表
65 0
|
前端开发 JavaScript 物联网
前端技术解读|阿里云产品内容精选(二十七)
本文内容选自阿里云开发者社区前端版块