使用阵列操作时,UI路由器停止工作

时间:2015-04-22 08:00:13

标签: angularjs angular-ui-router

我们说我有一系列标签:

$scope.tagArray = ['monkey', 'giraffe'];

然后做一个:

$location.search('tags', $scope.tagArray);

然后第一次完美工作 - 网址改为:

http://localhost:8000/#/?tags=monkey&tags=giraffe

但是......如果我改变阵列让我们说:

$scope.tagArray = ['monkey'];

再次运行我的搜索:

$location.search('tags', $scope.tagArray);

然后网址仍为:

http://localhost:8000/#/?tags=monkey&tags=giraffe

我甚至试图将undefined解析为$ location.search的参数,但是一旦我搜索了一个数组 - 我就无法更改标记'试。

有没有人经历过同样的事?或者有一个线索?

2 个答案:

答案 0 :(得分:0)

因为它更新了第一个参数。

文档:

  

如果搜索是字符串或数字,则paramValue将仅覆盖a   单一搜索属性。

我认为正确的方法是在这种情况下使用对象参数而不是字符串:

$location.search({ tags: 'monkey' });

答案 1 :(得分:0)

我最终做的事实上只是在每次有人点击搜索按钮时重置$ state.params。

$state.params = [];

重置后,我将所有$ location.search。我不认为这是最好的方式,但它完美无缺。