Sto usando $stateProvider
per la configurazione del mio percorso. Volevo sfruttare i dati personalizzati forniti per passare alcuni dati personalizzati da una pagina parziale all'altra (su ng-click
).come posso passare dati personalizzati a uno stato da una vista in ui-router?
Questa è la migliore che ho ottenuto finora:
Fissare dati personalizzato a State Oggetti
È possibile allegare i dati personalizzati per l'oggetto di stato (si consiglia di utilizzare una proprietà di dati per evitare conflitti).
// Example shows an object-based state and a string-based state
var contacts = {
name: 'contacts',
templateUrl: 'contacts.html',
data: {
customData1: 5,
customData2: "blue"
}
}
$stateProvider
.state(contacts)
.state('contacts.list', {
templateUrl: 'contacts.list.html',
data: {
customData1: 44,
customData2: "red"
}
})
Con l'esempio di cui sopra afferma è possibile accedere ai dati in questo modo:
function Ctrl($state){
console.log($state.current.data.customData1) // outputs 5;
console.log($state.current.data.customData2) // outputs "blue";
}
Si supponga che ho un altro stato chiamato i clienti con il proprio modello e controller. Come posso modificare il valore dell'oggetto dati stato dei contatti all'interno del controller/vista clienti? cioè: voglio cambiare da questo:
data: {
customData1: 44,
customData2: "red"
}
a questo:
data: {
customData1: 100,
customData2: "green"
}
Qualsiasi puntatore o il campione sarà apprezzato!
Revisionato - ho capito che funziona da solo ed ecco come: su un controller (ad esempio: customerCtrl), è possibile ottenere lo stato del contatto per nome e apportare la modifica desiderata, ad esempio l'aggiornamento del valore della proprietà dell'oggetto dati personalizzato come segue: // ottenere lo stato per nome e modificare il valore di dati personalizzati proprietà
$state.get('contacts').data.customData1= 100;
$state.go('contacts');// then you can make a go to that state.
Spero che questo possa aiutare qualcuno.
Si dovrebbe aggiungere la soluzione che hai trovato come una risposta e lo accetto. Questo è perfettamente valido e incoraggiato, in modo che altre persone possano beneficiare di ciò che hai imparato. – GregL
Grazie a @GregL, l'ho appena postato e l'ho accettato come risposta, lascerò anche la domanda aggiornata così com'è. – user3818435