首页 > Web开发 > 详细

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

时间:2020-09-28 17:35:55      阅读:47      评论:0      收藏:0      [点我收藏+]

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)
                }
            }
        },

 

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

原文:https://www.cnblogs.com/zbbk/p/13745884.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!