Ich verwende $stateProvider
für meine Routenkonfiguration. Ich wollte die von ihnen bereitgestellten benutzerdefinierten Daten nutzen, um einige benutzerdefinierte Daten von einer Teilseite an die andere zu übergeben (unter ng-click
).Wie kann ich benutzerdefinierte Daten von einer Ansicht in UI-Router an einen Zustand übergeben?
Dies ist das beste, das ich so weit gekommen:
Bringen Sie Custom Data State
Sie Objekte können benutzerdefinierte Daten an das Statusobjekt anhängen (wir empfehlen eine Dateneigenschaft mit Konflikten zu vermeiden).
// 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"
}
})
Mit dem obigen Beispiel heißt Sie die Daten wie folgt zugreifen können:
function Ctrl($state){
console.log($state.current.data.customData1) // outputs 5;
console.log($state.current.data.customData2) // outputs "blue";
}
Angenommen, ich habe ein anderer Staat Kunden mit einer eigenen Vorlage und Controller aufgerufen. Wie kann ich den Wert des Zustandsdatenobjekts von Kontakten im Kunden-Controller/View ändern? das heißt: Ich möchte von diesem ändern:
data: {
customData1: 44,
customData2: "red"
}
dazu:
data: {
customData1: 100,
customData2: "green"
}
Alle Zeiger oder Probe wird geschätzt!
Überarbeitet - ich habe es funktioniert von mir selbst und hier ist wie :. Auf einem Controller (sagen wir: customerCtrl) können Sie den Status des Kontakts nach Namen abrufen und die gewünschte Änderung vornehmen, z. B. den Eigenschaftswert des benutzerdefinierten Datenobjekts wie folgt aktualisieren: // den Status anhand des Namens abrufen und den Wert ändern von benutzerdefinierten Daten Eigenschaft
$state.get('contacts').data.customData1= 100;
$state.go('contacts');// then you can make a go to that state.
Ich hoffe, das wird jemandem helfen.
Sie sollten die Lösung, die Sie als Antwort gefunden hinzufügen und es akzeptieren. Das ist vollkommen in Ordnung und ermutigt, damit andere Menschen von dem profitieren können, was Sie gelernt haben. – GregL
Danke @GregL, ich habe es gerade gepostet und akzeptiere es als Antwort, ich werde die aktualisierte Frage auch so lassen. – user3818435