浏览完文档后,我想我已经错过了一个让我失望的概念。在AngularJS中,$ location.search()返回一个getter / setter,它使我能够操作AngularJS搜索“查询字符串” - 即#!...之后的URL部分? (在“hash-bang模式”中)。似乎很容易。
假设我导航到我操纵过这个页面的#!/budgets
页面;例如:
vm.filterOptions = $location.search();
vm.filterOptions.status = vm.filterOptions.status || "active";
现在,filterOptions.status将有一个值,$ location.search()。status将具有相同的值。
我认为位置栏中的URL在此时没有变化,因此我们有$ location.search()的内容与位置栏中的URL不匹配。我需要调用$ location.search($ location.search())或类似的实际触发位置更改。很好,但是这个行为是在某个地方拼写出来的吗?
然后,如果我再点击普通链接,例如<a href="#!/products">
,则$ location.search()的内容将保留,即使新网址在搜索中没有任何内容。此外,如果我点击包含搜索字词的链接(例如<a href="#!/products?foo=bar">
),除了新属性{{1}之外,$ location>的内容仍会保留 }显示在URL中。这让我觉得很奇怪,虽然我可以看到foo
和<a href="...
实际上在哪里操纵URL,所以我很可能有理由错过。你能救我一下吗?
是否有设置或更好的方法让AngularJS $ location.search()重置或清除新网址导航到时,尤其是通过普通的$location.search()...
链接?我错过了什么?
答案 0 :(得分:0)
虽然我仍然对于$location.search()
链接上保留<a href="#...">
上的属性的原因感到困惑,但我认为我找到了解决方案。
而不是操纵$location.search()
的属性,我正在通过var terms = angular.copy($location.search());
操纵它的副本。然后,当我想要使其生效时,我打电话$location.search(terms);
。此类修改<{>> 在<a href="#...">
个链接中进行。我仍然对为什么$location.search()
的{{1}}属性的编辑在<a href="#...">
链接中进行编辑感到困惑,但至少我有一个很好的解决方案。