$ state.go使用动态参数重新加载和更新URL

时间:2016-05-23 11:31:32

标签: angularjs angular-ui-router

在控制器中,我正在打电话:

$state.go("myState", $scope.urlParams);

$scope.urlParams可以包含一个或多个参数。 (动态)

我的$stateProvider配置如下:

url: '/myPage?param1&param2&param3&param4'

现在让我们举一个例子来说明我的问题:

我第一次使用以下方式加载'myPage':

$state.go("myState", $scope.urlParams);

$scope.urlParams = {'param1' : 111 , 'param2' : 222};

我的网址如下..../myPage?param1=111&param2=222

现在我已经在'myPage'但我正在使用这个时间:

$state.go("myState", $scope.urlParams);

$scope.urlParams = {'param1' : 111};

我的问题在那里,我的网址仍然看起来像这样..../myPage?param1=111&param2=222

但我希望如此,我的网址如下:

..../myPage?param1=111

3 个答案:

答案 0 :(得分:2)

第二次,您应该将代码更改为:

$state.go("myState", $scope.urlParams, {inherit: false});

$state.go在内部调用$state.transitionTo,但会自动将选项设置为{ location: true, inherit: true, relative: $state.$current, notify: true }

设置为inherittrue属性从当前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});