在使用vue开发过程当中中,有这样的需求,点击页面某个列表,须要新开一个窗口展现对应的数据,vue
通常咱们会使用window.open(url,name,...)打开新的窗口数组
第一个是url路径,第二个是新开窗口的名称,第三个和的四个参数,我还没好好研究,也还不清楚具体的做用是啥post
使用过程当中的重中之重就是参数的接收很传递this
我只是用了在url后面拼接参数的方法,至于post,body内传参的方法我也不知道,url
大体就是这个样子的:spa
window.open('/home/.../target?myString=' + this.myStr + '&data=' + this.data+ '&...' .....对象
这里的this.myStr和this.data能够看作是在须要传递的字符串和一个对象数组开发
myStr = '敲代码,敲代码'字符串
data:[ {id: 12,name:'小花猫',age:'12'}, {id: 1,name:'大狼狗',age:'22'}]get
对性数组是不能够像字符串那样直接传递的,那样是取不到数据的,解决的办法就是拼接的时候使用JSON.stringify先将对象或数组转为字符串再拼接上去,在新串口取到数据后再使用JSON.parse转回来就行了
因此正确的写法是:
window.open('/home/.../target?myString=' + this.myStr + '&data=' +JSON.stringify(this.data)+ '&...' .....
如今数据已经传到新窗口了,该怎么取呢?网上有不少方法都是经过window.location.search来取,但是不知道为何,我取不到啊,
因此我是经过this.$route.query取到