如果是从连接地址后面获取某个参数,只需要:this.$route.query.xxx即可,但也有可能面对多种情况:
(1)从后台返回的链接里面取参数
getParamQueryString (url, name) {
let subStr = name + '='
if (url.indexOf(subStr) !== -1) {
let arr = url.split(subStr)
let sub1 = arr[1]
if (sub1.indexOf('&') !== -1) {
let arr2 = sub1.split('&')
let sub2 = arr2[0]
return sub2
} else {
return sub1
}
}
return ''
}
使用方式:
let url = 'https://www.baidu.com/?aNo=11928282983&type=3&kys=27783'
console.log('打印-----', this.getParamQueryString(url, 'aNo'))
// 11928282983
自己封装的方法,使用起来非常方便,可以放在公共类里面
(2)跳转到其他页面时,继续携带原链接参数
getParamOriginalString() {
const queryStr = this.$route.query
const params = []
for (const key in queryStr) {
params.push(key + '=' + queryStr[key])
}
return '?' + params.join('&')
}
使用方式:
let paramsStr = this.getParamOriginalString()
this.$route.push(`/nextPage${paramsStr}`)
(3)当使用hash模式的时候,从连接里面获取#index.html/前面的参数(针对微信授权取code)
getQueryString(name) {
const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
const r = window.location.search.substr(1).match(reg)
if (r != null) return unescape(r[2])
return null
}
(4)当使用hash模式的时候,从连接里面获取#index.html/后面的参数
getQueryStringByChannel(name) {
const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
if (!window.location.hash.split('?')[1]) {
return null
}
const re = window.location.hash.split('?')[1].match(reg)
if (re != null) return unescape(re[2])
return null
}
网友评论