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
??
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