Ich möchte in der Lage sein, in einen Zustand überzugehen und ein beliebiges Objekt mit dem UI-Router zu übergeben.
Ich bin mir bewusst, dass dies normalerweise $stateParams
verwendet wird, aber ich glaube, dass dieser Wert in die URL eingefügt wird, und ich möchte nicht, dass Benutzer diese Daten mit Lesezeichen versehen können.
Ich würde gerne so etwas machen.
$state.transitionTo('newState', {myObj: {foo: 'bar'}});
function myCtrl($stateParams) {
console.log($stateParams.myObj); // -> {foo: 'bar'}
};
Gibt es eine Möglichkeit, dies zu tun, ohne Werte in die URL zu kodieren?
Antworten:
In Version 0.2.13 sollten Sie in der Lage sein, Objekte an $ state.go zu übergeben.
und greifen Sie dann auf den Parameter in Ihrer Steuerung zu.
myParam wird nicht in der URL angezeigt.
Quelle:
Siehe den Kommentar von christopherthielen https://github.com/angular-ui/ui-router/issues/983 , der hier zur Vereinfachung wiedergegeben ist:
quelle
transitionTo
.[object Object]
$stateProvider.state('myState', { url: '/myState/{myParam:json}', params: {myParam: null},...
Siehe die Versionshinweise zu 0.2.13 und die Codekommentare zu dieser Funktion.{ url: '/mystate/{id:[0-9]+}', params: { id: null, myParam: null }, ...
Es gibt zwei Teile dieses Problems
1) Verwenden eines Parameters, der eine URL nicht ändert (mithilfe der Eigenschaft params):
2) , die ein Objekt als Parameter: Nun, es gibt keinen direkten Weg , wie man es jetzt tun, wie jeder Parameter in einem String umgewandelt wird ( EDIT : seit 0.2.13, ist dies nicht mehr wahr - Sie können Objekte direkt) verwenden, aber Sie können dies umgehen, indem Sie die Zeichenfolge selbst erstellen
und in der Zielsteuerung das Objekt erneut deserialisieren
quelle
Eigentlich kannst du das machen.
Dies ist die offizielle Dokumentation zu Optionen in state.go
Dort wird alles beschrieben, und wie Sie sehen, ist dies der richtige Weg.
quelle
Übrigens können Sie auch das Attribut ui-sref in Ihren Vorlagen verwenden, um Objekte zu übergeben
quelle
1)
2)
quelle
Nein, die URL wird immer aktualisiert, wenn Parameter an übergeben werden
transitionTo
.Dies geschieht auf state.js: 698 im UI -Router .
quelle