Angular更改url地址参数(使用js的location)
程序员文章站
2022-06-10 21:01:37
...
今天想实现一个功能就是根据前一个画面传过来的参数判断是否当前画面需要重新检索。这是上一个画面传过来的url参数:
http://localhost:3000/#/manage/student?Flag=return
现在通过url参数判断flag为return,所以执行检索。但是有个问题是,当页面刷新时,因为url路径没有改变,所以flag仍为return。这样的话,画面还会执行检索操作,但是这种情况不想再让画面执行检索怎么办呢?于是我想到了用location的search方法替换url的参数值。
location.search 属性是一个可读可写的字符串,可设置或返回当前 URL 的查询部分(问号 ? 之后,井号 # 之前的部分)。
读取:location.search
设置:location.search = 'flag=new'
但是要注意 location.search 是取问号 ? 之后,井号 # 之前的部分。如果你的url是这样的:
http://localhost:8080/index.html#/version?flag=return
location.search取到的值是空的。即使你 location.search = 'flag=new'用这种方法设置,得到的url也是:
http://localhost:8080/index.html?flag=new#/version?flag=return
如果你是上面这种情况,就得用第二种方法改变参数值了。
const newHash = location.hash.replace('flag=return', 'flag=new');
location.replace(newHash);
推荐阅读