<!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/jquery2.1.4.min.js"></script>
<script src="../lib/Vue2.5.17.js"></script>
<link rel="stylesheet" href="../lib/bootstrap-3.3.7-dist/css/bootstrap.css">
</head> <body> <div id="app">
<comment @func="loadComments"></comment>
<ul class="list-group">
<li class="list-group-item" v-for="(item,index) in list" :key="index">
<span class="badge">评论人:{{ item.user }}</span>
{{ item.content }}
</li>
</ul> </div> <!-- 模板 -->
<template id="tmpl">
<div>
<div class="form-group form-inline">
<label for="">评论人:</label>
<input type="text" v-model="user" class="form-control">
</div> <div class="form-group form-inline">
<label for="">评论内容:</label>
<textarea v-model="content" name="" id="" cols="30" rows="10" class="form-control"></textarea>
</div> <div class="form-group form-inline">
<input type="button" class="btn btn-primary" @click="postComment" value="发表评论">
</div>
</div>
</template> <script>
var commentBox = {
data(){
return {
user : '',
content : ''
}
},
template: '#tmpl',
methods: {
postComment(){ //发表评论的方法
// 分析 发表评论的业务逻辑
// 1,评论数据放到 localStorage 中
// 2, 先组装一个最新的评论数据对象
// 3, 想办法把第二步中得到的评论对象保存到localStorage中
// 3.1 localStorage中只支持存放字符串,要先调用 JSON.stringify
// 3.2 在保存最新的评论数据之前,要先从localStorage获取到之前的评论数据(string)转换为一个数组对象。
//然后把最新的评论 push 到这个数组。(解决如果键相同值会覆盖的问题)
// 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);
list.unshift(comment);
//重新保存最新的评论数据
localStorage.setItem('cmts',JSON.stringify(list));
this.$emit('func');
this.user = this.content = '';
}
},
} var vm = new Vue({
el: '#app',
data: {
list: [{
id: Date.now(),
user: '李白',
content: '天生我才必有用'
},
{
id: Date.now(),
user: '江小白',
content: '劝君更尽一杯酒'
},
{
id: Date.now(),
user: '小马',
content: '我姓马,马云的马'
},
]
},
created() { //在创建的时候就调用加载函数。
this.loadComments();
},
methods: {
loadComments(){ //从本地的localStorage中加载列表
var list = JSON.parse(localStorage.getItem('cmts') || '[]');
this.list = list;
}
},
components: {
comment: commentBox
}
})
</script>
</body> </html>

Vue系列之 => 评论功能(小知识点串联)的更多相关文章

  1. 第 14 篇:交流的桥梁“评论功能”——HelloDjango 系列教程

    截止到目前为止我们的 django blog 文章展示部分,已经实现的"八九不离十"了.你以为本系列文章就要结束了吗?不能够!新的征程才刚刚开始,HelloDjango 系列文章刚 ...

  2. React.js 小书 Lesson16 - 实战分析:评论功能(三)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson16 转载请注明出处,保留原文链接和作者信息. 接下来的代码比较顺理成章了.修改 Commen ...

  3. React.js 小书 Lesson14 - 实战分析:评论功能(一)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson14 转载请注明出处,保留原文链接和作者信息. 课程到这里大家已经掌握了 React.js 的 ...

  4. vue教程2-07 微博评论功能

    vue教程2-07 微博评论功能 <!doctype html> <html> <head> <meta charset="utf-8"& ...

  5. React.js 小书 Lesson25 - 实战分析:评论功能(四)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson25 转载请注明出处,保留原文链接和作者信息. (本文未审核) 目前为止,第二阶段知识已经基本 ...

  6. Vue 变异方法splice删除评论功能

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 一周一个小demo — vue.js实现备忘录功能

    这个vue实现备忘录的功能demo是K在github上找到的,K觉得这是一个用来对vue.js入门的一个非常简单的demo,所以拿在这里共享一下. (尊重他人劳动成果,从小事做起~  demo原git ...

  8. 全栈项目|小书架|服务器端-NodeJS+Koa2 实现评论功能

    评论功能分析 上图可以看出评论功能主要实现了:评论的发布.评论列表的展示. 在不考虑子评论以及图片评论的场景下,评论功能主要有以下两个接口: 发布评论 获取评论列表(考虑分页) 评论 Model 的建 ...

  9. 手写 Vue 系列 之 从 Vue1 升级到 Vue2

    前言 上一篇文章 手写 Vue 系列 之 Vue1.x 带大家从零开始实现了 Vue1 的核心原理,包括如下功能: 数据响应式拦截 普通对象 数组 数据响应式更新 依赖收集 Dep Watcher 编 ...

随机推荐

  1. Linux 特殊字符_008

    Linux 特殊字符用于用户命令行bash环境处理数据,达到一种命令简化使用的功能 通配符 符号 功能 备注 * 代表所有(0到多个)字符 ? 代表任意一个字符 [ ] 匹配[ ]任意一个字符,写法[ ...

  2. 史上最全Java面试题整理(附参考答案)

    下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1.面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来 ...

  3. unity3d IL2CPP for android

    unity3d 使用IL2Cpp导出android工程报以下错误解决方法 重点是这块 “”System.Reflection.TargetInvocationException: ���õ�Ŀ�귢�� ...

  4. tiny png

    golang package main import ( "encoding/base64" "fmt" "os" "net/ht ...

  5. JS 浅谈函数柯里化,不明觉厉

    在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术.这个技术由 Christopher ...

  6. XML5个转义符:<,>,&,”,©;的转义字符分别如下: &lt; &gt;&amp; &quot; &apos;

    XML5个转义符:<,>,&,”,©;的转义字符分别如下: < >& " &apos;             $search = array ...

  7. java第一次上机实验--验证码

    package javashiyan; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event. ...

  8. Java基础学习笔记十九 File

    IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据 ...

  9. 教师信息管理系统(方式一:数据库为oracle数据库;方式二:存储在文件中)

    方式一: 运行截图 数据库的sql语句: /*Navicat Oracle Data TransferOracle Client Version : 12.1.0.2.0 Source Server ...

  10. thinkphp 百度地图Api坐标计算 A坐标距离B坐标多少公里 并按照距离近的排序 坐标排序 外部字段排序

    感谢我磊哥 函数封装方法: //计算距离 /* **$a 可多数坐标 就是可数组类型的 ***$b 是登录者的坐标 ***ps: lat经度 lng纬度 经度在前纬度在后 *** ***/ funct ...