在使用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取到