Ho appena iniziato ad imparare angularjs e sto usando angolare-ui-router. Sto cercando di inviare dati da uno stato all'altro usando $state.go
ma non ho avuto successo. Ecco cosa ho fino ad ora:UI-Router angolare che passa i dati tra stati con funzione go non funziona
Non ho incluso intenzionalmente l'html perché ho pensato che non fosse necessario se fosse necessario per favore dimmelo e lo aggiungerò.
Ho configurato i miei stati, come di seguito:
$stateProvider
.state('public', {
abstract: true,
templateUrl: 'App/scripts/main/views/PublicContentParent.html'
})
.state('public.login', {
url: '/login',
templateUrl: 'App/scripts/login/views/login.html',
controller: 'loginCtrl'
})
$stateProvider
.state('private', {
abstract: true,
templateUrl: 'App/scripts/main/views/PrivateContentParent.html'
})
.state('private.visits', {
url: '/visits',
views: {
'main': {
controller: 'visitsListCtrl',
templateUrl: 'App/scripts/visits/views/VisitsList.html'
}
}
});
Quando il mio LoginController
viene richiamato eseguirà il codice qui sotto:
loginModule.controller('loginCtrl', ['$state', function ($scope, $state) {
$state.go('private.visits', { name : "Object"});
}]);
Quando la pagina private.visits
è attivo, sto cercando di stampare il $stateParams
:
visitsModule.controller('visitsListCtrl', ['$stateParams',
function ($stateParams) {
console.log($stateParams);
}]);
Come stato $ stateParams è un oggetto vuoto. Mi aspettavo che contenga l'oggetto che ho passato in loginCtrl.
EDIT
sembra che se private.visits
url ha questo formato URL '/visits/:name'
e ho anche aggiungere i params di proprietà: [ "nome"] Ho ottenere l'accesso all'oggetto mando dallo stato public.login
. L'effetto collaterale è che i parametri vengono aggiunti all'URL che è logico.
Ho provato a fare la stessa cosa con uno stato figlio senza url, e in questo caso sembra che non abbia accesso ai parametri passati da public.login
.
Come si inviano i dati negli stati figlio?
Questa è una buona risposta con un chiaro esempio, dovrebbe essere accettata. – psp
Possiamo passare un oggetto invece di tipi di dati primitivi? –
No, puoi usare JSON.stringify ma ti consiglio di usare una fabbrica per condividere i dati. –