<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>评论</title>
<script type="text/javascript" src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-resource@1.3.4"></script>
<script src="js/jquery/2.0.0/jquery.min.js"></script>
<link rel="stylesheet" href="css/bootstrap/3.3.6/bootstrap.min.css">
<script src="js/bootstrap/3.3.6/bootstrap.min.js"></script>
</head>
<body>
<div id="app">
<cmt-box @func="load"></cmt-box>
<ul class="list-group">
<li class="list-group-item" v-for="item in list" :key="item.id">
<span class="badge">评论人:{{ item.user }}</span>
{{ item.content }}
</li>
</ul>
 
</div>
<template id="temp">
<div>
<div class="form-group">
<label for="my-input">评论人:</label>
<input id="my-input" class="form-control" type="text" v-model="user">
</div>
<div class="form-group">
<label for="my-input">评论内容:</label>
<textarea class="form-control" v-model="content"></textarea>
<input type="button" class="btn btn-primary" value="发表评论" @click="post">
</div>
</div>
</template>
<script>
var commentBox = {
template:'#temp',
data(){
return{
user:'',
content:''
}
},
methods:{
post(){
var comment = { id:Date.now(), user:this.user, content:this.content }
var list = JSON.parse(localStorage.getItem('cmts')||'[]')
list.unshift(comment)
localStorage.setItem('cmts',JSON.stringify(list))
this.user = this.content = ''
// 调用父组件的load方法
this.$emit('func')
},
}
}
var vm = new Vue({
el: "#app",
data: {
list:[
{id: Date.now() ,user:'拜仁' ,content:'10号:罗本'},
{id: Date.now() ,user:'皇马' ,content:'10号:莫德里奇'},
{id: Date.now() ,user:'巴萨' ,content:'10号:梅西'}
]
},
// 不能用beforeCreated,在执行这个钩子函数的时候,data,methods都还没被初始化
created(){
this.load()
},
methods:{
load(){
var list = JSON.parse(localStorage.getItem('cmts')||'[]')
this.list=list
}
},
components: {
'cmt-box':commentBox
},
});
</script>
</body>
</html>
 

什么是localStorage

在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。

localStorage的优势

1、localStorage拓展了cookie的4K限制
    2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的
    3、localStorage与sessionStorage的唯一一点区别就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空

localStorage的使用

localStorage.getItem(key):获取指定key本地存储的值
    localStorage.setItem(key,value):将value存储到key字段

比如:
在A页面中先存储:

var imgs = obj_mainform.archivesId  //声明个变量存储下数据
localStorage.setItem('key',imgs);  //将变量imgs存储到name字段

在B页面中使用:

var naid = localStorage.getItem("key"); //获取指定key本地存储的值

vue学习(5)-评论功能(利用父组件的方法)的更多相关文章

  1. vue.js(19)--vue中子组件调用父组件的方法

    子组件是不能直接使用父组件中的方法的,需要进行事件绑定(v-on:自定义方法名="父组件方法名"),然后在子组件中再定义一个方法,使用this.$emit('自定义方法名')语句完 ...

  2. Vue把父组件的方法传递给子组件调用(评论列表例子)

    Vue把父组件的方法传递给子组件调用(评论列表例子) 效果展示: 相关Html: <!DOCTYPE html> <html lang="en"> < ...

  3. vue学习笔记(九)vue-cli中的组件通信

    前言 在上一篇博客vue学习笔记(八)组件校验&通信中,我们学会了vue中组件的校验和父组件向子组件传递信息以及子组件通知父组件(父子组件通信),上一篇博客也提到那是对组件内容的刚刚开始,而本 ...

  4. vue 子组件调用父组件的方法

    vue中 父子组件的通信: 子组件通过 props: { //子组件中写的. childMsg: { //字段名 type: Array,//类型 default: [0,0,0] //这样可以指定默 ...

  5. Vue子组件调用父组件的方法

    Vue子组件调用父组件的方法   Vue中子组件调用父组件的方法,这里有三种方法提供参考 第一种方法是直接在子组件中通过this.$parent.event来调用父组件的方法 父组件 <temp ...

  6. Vue中子组件调用父组件的方法

    Vue中子组件调用父组件的方法 相关Html: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  7. vue子组件通知父组件使用方法

    vue子组件通知父组件使用方法 <template> <mt-field placeholder="验证码" v-model="getverifycod ...

  8. vue:子组件通过调用父组件的方法的方式传参

    在本案例中,由于子组件通过调用父组件的方法的方式传参,从而实现修改父组件data中的对象,所以需要啊使用$forceUpdate()进行强制刷新 父组件: provide() { return { s ...

  9. vue学习笔记之:为何data是一个方法

    vue学习笔记之:为何data是一个方法 在vue开发中,我们可以发现,data中的属性值是在function中return出来的.可为何data必须是一个函数呢?我们先看官方的解释: 当一个组件被定 ...

随机推荐

  1. golang中mysql建立连接超时时间timeout 测试

    本文测试连接mysql的超时时间. 这里的"连接"是建立连接的意思. 连接mysql的超时时间是通过参数timeout设置的. 1.建立连接超时测试 下面例子中,设置连接超时时间为 ...

  2. [go]socket编程

    socket特性 总是成对出现 是全双工的(同时支持收发)(两个channel绑在一起) 应用程序 - cs模式(客户端开发) - bs模式(web开发) net包api基础 都是客户端主动发数据(c ...

  3. ContentProvider 共享数据

      onCreate 其它应用第一次访问时被调. insert 外部应用使用此方法添加数据. delete 外部应用使用此方法删除数据. update 外部应用使用此方法更新数据. query 外部应 ...

  4. putty简易教程

    和xshell相比,putty除了每次登陆时需要鉴权之外,基本上体验都差不多,由于putty以命令行操作方式为主,因此使用效率上会略高于xshell. 1.下载 下载地址1:(最新版) https:/ ...

  5. Spring下使用Redis

    在Spring中使用Redis使用使用两个依赖包jedis.jar.spring-data-redis.jar 一下是Maven项目pom.xml添加依赖 <!--jedis.jar --> ...

  6. vue中 keep-alive 组件的作用

    原文地址 在vue项目中,难免会有列表页面或者搜索结果列表页面,点击某个结果之后,返回回来时,如果不对结果页面进行缓存,那么返回列表页面的时候会回到初始状态,但是我们想要的结果是返回时这个页面还是之前 ...

  7. 【转载】VMware Workstation网络说明

    1.什么是bridged(桥接模式)?答:在这种模式下,使用VMnet0虚拟交换机,虚拟操作系统就像是局域网中的一台独立的主机,与宿主计算机一样,它可以访问网内任何一台机器.在桥接模式下,可以手工配置 ...

  8. BasePage基础页面的封装

    Paget Object设计模式,不多说,但在接触了poium测试库后,个人感觉BasePage都是多余的..但在次还是做个记录 class Page(): def __init__(self, dr ...

  9. Jquery的深浅拷贝涉及到的知识点

    1.安全的类型检测 Object.prototype.toString.call(obj) => "[object NativeConstructorName]" /** * ...

  10. python urllib2 实现大文件下载

    使用urllib2下载并分块copy: # from urllib2 import urlopen # Python 2 from urllib.request import urlopen # Py ...