2016-05-23 15 views
3

In einem Controller, ich rufe:

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

$scope.urlParams Dose enthält einen oder mehrere params. (Dynamisch)

Meine $stateProvider Config ist wie folgt aus:

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

Nun wollen wir ein Beispiel nehmen, mein Problem zu veranschaulichen:

Ich bin Laden 'myPage' zum ersten Mal mit:

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

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

Meine URL aussieht wie diese ..../myPage?param1=111&param2=222

Jetzt bin ich schon auf 'myPage' aber ich bin mit dieser Zeit:

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

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

Mein Problem ist es, meine url noch Aussehen wie das ..../myPage?param1=111&param2=222

Aber ich möchte, dass meine URL wie folgt aussieht:

..../myPage?param1=111 

Antwort

2

Am zweiten Mal, sollten Sie Ihren Code ändern:

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

$state.go Anrufe $state.transitionTo intern aber automatisch setzt Optionen auf { location: true, inherit: true, relative: $state.$current, notify: true }.

Und die inherit -Eigenschaft, wenn auf true festgelegt, erben URL-Parameter von der aktuellen URL. Aus diesem Grund erhalten Sie die vorherigen Parameter in der URL.

Siehe die docs.

+1

Es funktioniert perfekt danke! – Emidomh

-1

Sie sollten es tun mit: {reload:true} Eigenschaften, wie folgt aus:

$state.go("resultSearchArticle", $scope.urlParams, {reload : true}); 
0

Setzen Sie die Eigenschaft inherit in Ihrem Parameter $ state.go() auf false.

Standardmäßig ist es wahr und er erbt die URL-Parameter von Ihrer aktuellen URL.

Verwandte Themen