vue-router-传参中,两个也没传入对象需要格式化数据问题-JSON.parse-JSON.stringify

a页面跳转到b页面的,b页面需要a页面提供过来的参数:

关于路由传参有很多中方式,这里只说明常用到的一种:

刷新页面后数据不会丢失的编程式传参:

1:a页面跳转并传参:this.$router.push({path: `/roleAccess/${roleP}`})

2:b页面接收参数:console.log(this.$route.params)

3:另外-路由需要配置:

{
path:"/roleAccess/:data",
name:"roleAccess",
component:roleAccess,
},

三步即可:不过这种传参跳转b页面后b页面的路径后面会跟随数据,这是缺点,优点是即便是在b页面刷新了数据也不会丢失掉(当然也可以用其它方式传参然后用其它方式追述数据,比如缓存和状态管理等)

4:这种方式有个不好的地方,就是传入的值如果是obj对象 那么b页面读取到的也是一个obj对象比如:“[object,object]”

这就需要用到了:在a页面传入参数时:JSON.stringify(data)

然后在b页面接收数据时:JSON.parse(this$roue.params.data)

注意:1:跳转时候是this.$router.push  b页面打印时是$route.params

2:b页面获取值时需要加判断,如果有值才 JSON.parse 不然会报错:报错信息大致就是 

 Unexpected token o in JSON at position 1  -JSON.parse解析错误

 

参考:

Apage

            //跳转查看角色权限
            ToRoleAcessPage(tags){
                let roleP = JSON.stringify(tags)
                // /roleAccess
                // this.$router.push('/roleAccess')
                this.$router.push({
                  path: `/roleAccess/${roleP}`
                })
            },

Bpage

            getdataInit(){
                console.log(this.$route.params)
                if(this.$route.params){
                    let obj = this.$route.params.data
                    let res = JSON.parse(obj)
                    this.data[0].accessNote = res.roleNote
                    this.data[0].accessName = ""
                    res.roleAccess.map(item=>{
                        this.data[0].accessName += item + " "
                    })
                    console.log(res,this.data)
                }
            }
        },

 

posted @ 2020-09-28 17:24  少哨兵  阅读(409)  评论(0编辑  收藏  举报