在使用vue開發過程中中,有這樣的需求,點擊頁面某個列表,需要新開一個窗口展示對應的數據,
一般我們會使用window.open(url,name,...)打開新的窗口
第一個是url路徑,第二個是新開窗口的名稱,第三個和的四個參數,我還沒好好研究,也還不清楚具體的作用是啥
使用過程中的重中之重就是參數的接收很傳遞
我只是用了在url后面拼接參數的方法,至於post,body內傳參的方法我也不知道,
大致就是這個樣子的:
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'}]
對性數組是不可以像字符串那樣直接傳遞的,那樣是取不到數據的,解決的辦法就是拼接的時候使用JSON.stringify先將對象或數組轉為字符串再拼接上去,在新串口取到數據后再使用JSON.parse轉回來就好了
所以正確的寫法是:
window.open('/home/.../target?myString=' + this.myStr + '&data=' +JSON.stringify(this.data)+ '&...' .....
現在數據已經傳到新窗口了,該怎么取呢?網上有很多方法都是通過window.location.search來取,可是不知道為什么,我取不到啊,
所以我是通過this.$route.query取到