vue二维码扫描把当前用户数据传给注册页面

这种写法,我扫描直接undefined,也许是因为我还没有上传服务器,所以扫不出来。手机扫出来是这样的:
http://192.168.3.159:8877/register?name=undefined&code=undefined
我二维码页面写的是这样子,name和code是接收接口传过来当前用户的值,我这些的有问题吗?我要怎么处理才能把这个链接上的数据放在我注册页面上?有大佬会吗?
image.png

注册页:
获取url的方法:

getUrlKey: function (name) {
        return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [,''])[1].replace(/\+/g, '%20')) || null
    },
    这里|| [,'']),我复制过来前面就是空的,然后eslint貌似会直接报错

image.png
获取url地址。
image.png

这三个有个是固定的,另外的就是我要接收这个二维码用户的数据。
image.png
接口代理过去的。
image.png

////////////////////////////////////////////////
[凯迪Wen]说的写法,用上后就只会放大了。
image.png

阅读 3.4k
4 个回答

那你应该要点注册的时候再生出二维码,不要一开始就把二维码初始化出来?

第一张图中你圈出的部分有问题,data中的options里面使用this;你可以了解下data中this的指向;建议你把options写到computed中试试

image.png

直接在data里面读取namecode是不会双向绑定的,所以你扫了码后,namecode有值,this.options.text都是undefined

可以使用computed配合watch

computed() {
    codeUrl() {
        return `http://192.168.3.159:8877/register?name=${this.name}&code=${this.code}`
    }
},
watch: {
    codeUrl(url) {
        this.options.text = url;
    }
}

我理解的业务流程;
应该是客户端扫描二维码,成功后会跳转到你的注册页,你去获取链接上带的参数。?key=value&格式可以直接用query拿的,你把widnow.location.href打印出来看看

推荐问题