2014-11-16 4 views
5

Ich habe eine eckige Anwendung, die das ionic-Framework verwendet, die UI-Router am Back-End verwendet.

In einem meinem Controller Ich nenne:

$location.search('filter','sometext'); 

Ich habe reloadOnSearch in meiner Routing-Konfiguration deaktiviert. Ich habe festgestellt, dass die Aktualisierung des Standorts die $stateParams nicht aktualisiert. Gibt es eine Möglichkeit, die $stateParams zu aktualisieren, wenn der Standort aktualisiert wird? Ich habe die UI-Router-Dokumentation durchgesehen, habe aber nichts von diesem Szenario gesehen, aber vielleicht habe ich es verpasst.

+0

Ich fand '$ urlRouter.sync()', aber das aktualisiert die Zustandsparameter nicht, nachdem der $ Standort aktualisiert worden ist. –

+0

Wann verwenden Sie die Synchronisierung()? '$ rootScope. $ on ('$ locationChangeSuccess', Funktion (evt) {$ urlRouter.sync();});' –

+0

Dies ist ein verifizierter Fehler. https://github.com/angular-ui/ui-router/issues/1546 –

Antwort

5

Ich hatte eine ähnliche Situation. Wenn Sie reloadOnSearch deaktiviert haben, können Sie die Routenaktualisierungen nicht verfolgen, aber ich habe eine Lösung für diesen Fall gefunden.

Uhr $stateParams:

$scope.$watchCollection('$stateParams', function (newParams) { 
    var search = $location.search(); 

    if (angular.isObject(newParams)) { 
     angular.extend(search, newParams); 
    } 

    $location.search(search).replace(); 
}); 

ändern $stateParams, nicht Route:

$scope.$stateParams.offset += $scope.$stateParams.limit; 

Komplett working example.