2014-11-16 2 views
5

Ho un'applicazione angolare che utilizza il framework ionico, che utilizza l'interfaccia utente sul back-end.

In uno dei miei controllori io chiamo:

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

devo reloadOnSearch disabile nella mia configurazione di routing. Ho notato che l'aggiornamento della posizione non aggiorna lo $stateParams. C'è un modo per forzare il $stateParams ad aggiornare come la posizione viene aggiornata? Ho dato un'occhiata alla documentazione del router, ma non ho visto nulla su questo scenario, ma forse l'ho perso.

+0

Ho trovato '$ urlRouter.sync()' ma questo non aggiorna i parametri di stato dopo che la posizione $ è stata aggiornata. –

+0

Quando si utilizza sync()? '$ rootScope. $ on ('$ locationChangeSuccess', function (evt) {$ urlRouter.sync();});' –

+0

Questo è un bug verificato. https://github.com/angular-ui/ui-router/issues/1546 –

risposta

5

Ho avuto una situazione simile. Non puoi tenere traccia degli aggiornamenti del percorso se hai disabilitato reloadOnSearch, ma ho trovato una soluzione per questo caso.

Guarda $stateParams:

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

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

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

Change $stateParams, non percorso:

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

Completamente working example.