我们说我有一系列标签:
$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的参数,但是一旦我搜索了一个数组 - 我就无法更改标记'试。
有没有人经历过同样的事?或者有一个线索?
答案 0 :(得分:0)
因为它更新了第一个参数。
文档:
如果搜索是字符串或数字,则paramValue将仅覆盖a 单一搜索属性。
我认为正确的方法是在这种情况下使用对象参数而不是字符串:
$location.search({ tags: 'monkey' });
答案 1 :(得分:0)
我最终做的事实上只是在每次有人点击搜索按钮时重置$ state.params。
$state.params = [];
重置后,我将所有$ location.search。我不认为这是最好的方式,但它完美无缺。