問題:A頁面點(diǎn)擊按鈕button,觸發(fā)button事件進(jìn)入B頁面壳鹤,并且在B頁面打開一個(gè)b1彈窗;由別的路徑或方法直接進(jìn)入B頁面,則不打開b1彈窗
解決方法一:query存字段(失數挥洹)
? ? 失敗原因:B頁面中獲取 this.$route.query.way的值一直為1,即使是通過標(biāo)簽切換赦颇,這并不符合設(shè)計(jì)
```
// A頁面
createSecond(row)?{
? ? this.$router.push({
?????????path:?'/secondClassification',
?????????query:?{
???????????// id:?row.id,
???????????way:?1?//?標(biāo)志(1):通知二級(jí)打開彈窗
?????????}
? ? })
}
```
解決方法二:query存字段(本地可以二鳄,但測(cè)試端失敗,不知道為什么)
```
// A頁面
createSecond(row)?{
? ? this.$router.push({
?????????path:?'/secondClassification',
?????????query:?{
???????????// id:?row.id,
???????????initialWay:?{
?????????????way:?1?//?標(biāo)志(1):通知二級(jí)打開彈窗
???????????}
?????????}
? ? })
},
// B頁面
?getInitialWay()?{
??????console.log('this.$route.query.initialWay',?this.$route.query)
??????if?(this.$route.query.initialWay?&&?this.$route.query.initialWay.way)?{
? ? ? ? ? // 延遲一下再打開媒怯,防止出現(xiàn)閃屏的錯(cuò)覺
????????setTimeout(()?=>?{
??????????// services.get(`${this.url}/insertSecondLevelView`,?{?id:?this.$route.query.id?}).subscribe((res)?=>?{
????????????// this.editForm?=?Object.assign({},?res.data)
????????????// console.log('res',?res,?this.dialogFormVisible)
? ? ? ? ? ? this.dialogFormVisible?=?true // 打開彈窗
??????????// })
????????},?200)
??????}
}
```
解決方法三:利用路由鉤子函數(shù)订讼,可以獲取到來源頁面,根據(jù)來源頁面決定是打開彈窗(失斏劝)
? ? 失敗原因:?jiǎn)渭兊挠蓙碓错撁媾袛嗍遣粔虻钠鄣睿瑥腁頁面直接切換到B頁面寄纵,并不需要B頁面打開彈窗,因此祈餐,需要增加一個(gè)判斷是否觸發(fā)了按鈕button的字段擂啥,這又回到了query傳值上。
解決方法四:利用sessionStorage(成功)
```
?// 存session
sessionStorage.setItem(key,?value)
// 取session
const?firstClassificationId?=?sessionStorage.getItem(key')
// 清除session:
sessionStorage.removeItem(key)
// 注:使用下面的clear會(huì)把所有session清除帆阳,不止是key
sessionStorage.clear(key)
```