在控制器中,我正在打电话:
$state.go("myState", $scope.urlParams);
$scope.urlParams
可以包含一个或多个参数。 (动态)
我的$stateProvider
配置如下:
url: '/myPage?param1¶m2¶m3¶m4'
现在让我们举一个例子来说明我的问题:
我第一次使用以下方式加载'myPage':
$state.go("myState", $scope.urlParams);
$scope.urlParams = {'param1' : 111 , 'param2' : 222};
我的网址如下..../myPage?param1=111¶m2=222
现在我已经在'myPage'但我正在使用这个时间:
$state.go("myState", $scope.urlParams);
$scope.urlParams = {'param1' : 111};
我的问题在那里,我的网址仍然看起来像这样..../myPage?param1=111¶m2=222
但我希望如此,我的网址如下:
..../myPage?param1=111
答案 0 :(得分:2)
第二次,您应该将代码更改为:
$state.go("myState", $scope.urlParams, {inherit: false});
$state.go
在内部调用$state.transitionTo
,但会自动将选项设置为{ location: true, inherit: true, relative: $state.$current, notify: true }
。
设置为inherit
时true
属性从当前URL继承URL参数。这就是您在URL中获取先前参数的原因。
请参阅docs。
答案 1 :(得分:0)
在$ state.go()参数中将inherit属性设置为false。
$state.go("myState", $scope.urlParams, {inherit: false});
默认情况下为true,它会从当前网址继承url参数。
答案 2 :(得分:-1)
您应该使用:{reload:true}
属性,例如:
$state.go("resultSearchArticle", $scope.urlParams, {reload : true});