赞
踩
Uniapp在URL中的参数会存在于两种位置,如下:
http://localhost:8080/unipp?id=399#/pages/index/index?name=eagle
当我们在页面跳转时,可以通过onLoad(option)获取到#后面的传参,而前面的参数是无法获取的。
onLoad(option){
if (option && option.name) {
console.log('name', name) // name eagle
}
if (option && option.id) {
console.log('id', id) // 控制台不会输出
}
}
该方法可满足上述两个位置的参数获取,优先从#之前的部分匹配指定的参数,若没有再匹配#后面的部分。
该方法对于参数尾部带有两个==,以及一些未知情况,可能会造成掉参现象。
示例:getUrlValue(‘id’) getUrlValue(‘name’)
getUrlValue(value) { // 从第一个?开始,且不包括#之后,并截取掉?的部分 var query = location.search.substring(1); // 从#开始的部分,并转换成数组 var hash = location.hash.split("?"); // query和hash均没有参数 if (!query && hash.length < 2) { return '' } // 先取query部分的参数进行匹配 var vars = query.split("&") for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("=") if (pair[0] == value) { return pair[1] } } // query没有参数,或者有参数但没找到,则取hash部分的参数 if (!hash[1]) { return '' } vars = hash[1].split("&") for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("=") if (pair[0] == value) { return pair[1] } } return '' },
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。