2014-06-18 15 views
5

Ho un'applicazione che utilizza un provider di pagamenti esterno per acquistare crediti. Dopo un acquisto riuscito, il fornitore di pagamenti reindirizza a http://any.url/?orderNr=xxxx&outcome=SUCCESS. Questo url è un'applicazione AngularJS che fa uso di UI Router. La configurazione del router è questo:router ui angolare inserisce una stringa di query prima dell'hash

$stateProvider 
    .state('dashboard', { 
     url: '/dashboard', 
     templateUrl: 'views/dashboard.html', 
     controller: 'DashboardCtrl', 
     isAuthenticated: true 
    }) 
    .state('login', { 
     url: '/login', 
     templateUrl: 'views/login.html', 
     controller: 'LoginCtrl', 
     isAuthenticated: false 
     }); 

$urlRouterProvider.otherwise('/login'); 

Così, quando l'utente torna alla radice del http://any.url ed è già stato registrato in esso reindirizza al cruscotto. Questo è il caso dopo un pagamento perché non è possibile effettuare pagamenti senza effettuare l'accesso. Il problema è che l'hashbang viene inserito dopo la stringa di query, quindi l'URL del dashboard diventa http://any.url/?orderNr=xxxx&outcome=SUCCESS#/dashboard. Nel DashboardCtrl non riesco a ottenere la stringa della query utilizzando $location.search(). C'è un modo per ottenere la stringa di query il 'modo angolare', quindi non analizzando location.href ??

+0

Puoi controllare dove il fornitore di pagamento reindirizza? Ad esempio, comunicare al provider di pagamento i reindirizzamenti a 'http: //any.url/#dashbard? OrderNr = xxxx & result = SUCCESS' – merlin

risposta

0

Se è necessaria la stringa di query per il percorso #/dashboard, è possibile specificare i parametri nella configurazione URL.

.state('dashboard', { 
    url: '/dashboard?orderNr&outcome', 

Per il docs

Problemi correlati