Lassen Sie uns sagen, dass wir eine Eltern-Kind-Beziehung in unserem $ stateProvider definiert haben, wie folgt:Wie wird der Elternstatus von angular ui-router immer ausgeführt, wenn der Status des Controllers geändert wird?
.state('myProfile', {
url: "/my/profile",
templateUrl: 'my/profile.html',
controller: 'MyProfileController'
}).state('myProfile.edit', {
url: "/edit",
templateUrl: 'my/profile.edit.html',
controller: 'EditMyProfileController'
});
Die Idee dabei ist, dass die Mutter myProfile
Zustand ist nicht editierbar, aber das Kind myProfile.edit
Zustand ist die tatsächliche Form zu Bearbeiten Sie das Profil. Lassen Sie uns ignorieren, wenn eine Profilseite so funktionieren sollte - ich spiele nur mit Dingen herum und lerne.
Wenn ein Benutzer das Formular abschickt, verwende ich das $ Zustand Objekt zur übergeordneten Seite gehen zurück:
$scope.save = function() {
userResource.update($scope.user, function() {
SessionService.refresh();
$state.go('myProfile'); // also tried with reload: true as well
});
}
Nachdem der Benutzer speichert die Profildaten - und es ist gespeichert immer richtig - die Die Ansicht des Elternteils wird nur aktualisiert, wenn ich F5 drücke und den Browser aktualisiere. Ein Ding, das ich bemerkt habe, ist, dass, wenn ich das Kind myProfile.edit
Zustand in ein Elternteil selbst und kein Kind des myProfile
Zustand mache, geht dieses Problem tatsächlich weg und Dinge verhalten sich wie erwartet (obwohl das Layout sieht so schlecht aus).
Es scheint, dass UI Router möglicherweise das Ergebnis des Elternteils zwischenspeichert, ahnungslos, dass sich die Dinge im Modell geändert haben und der Controller erneut ausgeführt werden muss?
Wie kann ich meine Eltern-Kind-Beziehung beibehalten, während die übergeordnete myProfile
Seite immer ihren Controller ausführt, um ihre Daten erneut zu laden? Grundsätzlich möchte ich, dass dies geschieht, wenn $state
verwendet wird oder wenn ein Link angeklickt wird, der auf myProfile
verweist. Wie kann ich das machen?
Und wenn ich nicht tun kann, was ich frage, dann bin ich mir bewusst, dass ich eine Reihe von Kinderzuständen einrichten und sie wie vorgesehen arbeiten lassen kann ... Wie kann ich jedoch den Standard-Kindstatus für Eltern festlegen? Angenommen, ich möchte myProfile.edit
als Standard-Kindstatus von myProfile
angeben - wie kann ich das tun?
Danke!
Dies ist hilfreich, aber in meinem Fall habe ich href, weil sie von einem CMS kommen. Ich kann nicht herausfinden, wie Reload in diesem Fall auf "True" gesetzt wird. – drye
Ich wünschte, ich könnte zweimal upvote - danke! – Ben
Ich habe auch das gleiche Problem. Ich komme auch von einem 3rd-Party-System. – DragonDTG