以前是学习android的,如果启动一个界面(或者称呼新界面是一个选择器),返回数据的时候,通过onresult很清晰的能拿到返回值。但是VUE如何处理这种选择器呢?A界面启动B界面获取一些数据,最后保存A的全部数据,目前用的是B界面将数据保存到VUEX中,然后A界面的avtivited中,获取刚才保存的数据。最后清空掉。(为了避免A界面打开B界面数据丢失,A界面用了keepalive)感觉这种方式很烂,代码看起来很不好。正确打开方式是什么?
一、父子传值
1.在父元素中绑定一个参数 我这里的是: :
2. 在子元素中接受,使用props接收。
二、子向父传值
1.在子组件中触发
我这里并没有传值,如果需要传值,就:self.$emit('updates', '你要传的值').
2.在父元素监听事件
传参的直接在updates (参数) { }
三、同级传参
两种方式
1.query穿参,或者params传参
使用 this.$router.push({path: '/', query: {参数名: '参数值'})
this.$router.push({name: '/', params: {参数名: '参数值'})
注意: 使用params时不能使用path
接收: var a = this.$route.query.参数名
var b = this.$route.params.参数名
2.sessionStore传参
触发
监听
如何深刻理解JavaWeb中session和cookie?
我们要了解Session和Cookie的含义,先看一下HTTP协议的特点:
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
关键是第5点:无状态。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。这对于web网站来说是致命的。
怎么解决这样的问题呢?就是会话跟踪技术
Cookie与Session正是解决HTTP无状态协议的会话技术。一个是在客户端记录,另一个是在服务器端记录,Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
Cookie的主要内容包括名字,值,过期时间,路径和域,路径和域共同构成了cookie的作用范围,相当于一个key-value的方式存在于客户端。根据有无设置过期时间可分为 会话Cookie和持久Cookie,不设置过期时间,则是会话Cookie,这个Cookie的生命周期为浏览器会话期间,关闭浏览器窗口,cookie就消失,若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在浏览器的不同进程间共享。
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。每个用户访问服务器都会建立一个session,那服务器是怎么标识用户的唯一身份呢?事实上,用户与服务器建立连接的同时,服务器会自动为其分配一个SessionId。以后每次客户端请求的时候,把这个SeesionId带过来即可。服务器端根据这个SessionId作为key,得到对应的value。从而来保持会话。一般来说session是依赖cookie的。如果用户在浏览器把cookie关闭,那么这个会话就无法保持了。如果不依赖于cookie,那么客户端不把sessionId保持到cookie里面,当用户登录之后,不管用户如何操作,都得带着这个sessionId在页面上传,从而达到每次调用服务器都传这个sessionId.