needUrl:字符串类型(string)或 数组类型(array),字符串类型时,为只能改变路由最后一位;数组类型时,第一个成员为需要替换的地址字符串,第二个参数为在现地址中需要替换的路由位数,例:http://localhost:8080/#/rightsmarket/couponCode,需要将rightsmarket/couponCode替换成 copt/index,则应该写为['copt/index',2]
thus:字符串(string)或 对象类型(object),需要带入地址后缀的参数,字符串类型,直接与needUrl传入参数进行拼接(传入的字符串不用添加?);对象类型则按照需要传入的信息进行按对象方式传入即可
directSplicing:选填,可以不用,可以传入任何不为false的值;如果传入参数后,则实现直接让needUrl与thus进行拼接方法,故开启此参数后,needUrl建议为完整的地址内容,切不能为数组类型
tapUrl(needUrl, thus, directSplicing) {
// 声明承接新地址变量
let newUrl;
// 判断是否开启了直接拼接参数directSplicing
// -----------------------------------------------------------------------------------------------------------------
if (directSplicing) {
newUrl = needUrl;
} else {
// 获取目前页面地址,并进行拆分成数组(不需要后缀传参)
let lodUrl = window.location.href.split('?')[0].split('/');
// 判断needUrl是否是数组
if (Array.isArray(needUrl)) {
// 是数组的话,则根据 needUrl 数组中的第二成员数量,进行循环获取 lodUrl的内容 拼接新的的地址
let urlMsg = '';
for (let index = 1; index <= needUrl[1]; index++) {
urlMsg = `${lodUrl[lodUrl.length - index]}/${urlMsg}`;
}
// 剪裁需要的信息
urlMsg = urlMsg.substring(0, urlMsg.length - 1);
// 修改成最新需要的地址信息
newUrl = window.location.href
.split('?')[0]
.replace(urlMsg, needUrl[0]);
} else if (typeof needUrl == 'string') {
// 修改成最新需要的地址信息
newUrl = window.location.href
.split('?')[0]
.replace(lodUrl[lodUrl.length - 1], needUrl);
}
}
// 判断传入的参数是字符串还是对象
// -----------------------------------------------------------------------------------------------------------------
if (typeof thus == 'string') {
// 是字符串的话,直接弹出拼接好的地址信息
return `${newUrl}?${thus}`;
} else if (typeof thus == 'object') {
// ==========================================================================================
// 是对象的话,则进行循环并拼接出新的地址
// 声明承接值的变量 (地址传参格式)
let Parameters = '';
// 循环传入的变量thus
for (const key in thus) {
// 拼接地址传参格式
Parameters = Parameters + `${key}=${thus[key]}&`;
}
// 弹出新地址内容
return `${newUrl}?${Parameters.substring(
0,
Parameters.length - 1,
)}`;
}
},
01-02
295