使用angular的$ location

时间:2016-12-07 18:44:35

标签: javascript angularjs url parameters

我的网址中有一个包含多个参数的页面。我正在尝试编写一个函数来单击元素。我希望它检查参数pthree是否存在。如果是,请将其更新为新值(不重复)。如果它不存在,请将其附加到我当前的URL并重新加载页面。

我在尝试更新当前网址时遇到了问题。

我当前的网址结构:

  

我的空间推迟实施= 99.9999999&安培; ptwo = -44.4444444&安培; pthree = 1&安培; pfour = 1&安培; pfive = 1

Controller snippet:

$scope.test = function (){
   $location.search('pthree', 0);
}

这部分有效。它更新了我的URL,但它将#?pthree = 0添加到我当前URL的末尾。

我想要的结果是:

  

我的空间推迟实施= 99.9999999&安培; ptwo = -44.4444444&安培; pthree = 0&安培; pfour = 1&安培; pfive = 1

有什么想法,我能做些什么才能得到我想要的结果?提前谢谢!

2 个答案:

答案 0 :(得分:0)

这对我有用。我发现我需要设置我的应用程序的HTML5模式。在此处阅读有关HTML5模式的更多信息:https://docs.angularjs.org/guide/ $ location。

在此之后,我在调用$ location.search({pThree:'0'}时遇到了另一个问题。它开始编写我的所有其他参数。例如,URL结构更改为?pThree = 0。为了解决这个问题,我必须阅读所有参数,更新pThree,然后全部写回来。

我希望这有助于其他人。

答案 1 :(得分:0)

只需执行以下操作即可轻松完成此操作:

// existing url with params
// http://myurl.com/path/view/etc?param1=abc&param2=def

// add your new param to the search() object
$location.search().param3 = 'ghi';

// set your search again with the updated search object
$location.search( $location.search() );

这将更新您的网址:

// http://myurl.com/path/view/etc?param1=abc&param2=def&param3=ghi