Ich erstelle eine tabulatorbasierte Seite, auf der einige Daten angezeigt werden. Ich verwende UI-Router in AngularJs, um Zustände zu registrieren.
Mein Ziel ist es, beim Laden der Seite eine Standardregisterkarte zu öffnen. Jede Registerkarte hat Unterregisterkarten, und ich möchte, dass beim Ändern der Registerkarten eine Standardunterregisterkarte geöffnet wird.
Ich habe mit der onEnter
Funktion getestet und im Inneren verwende ich sie, $state.go('mainstate.substate');
aber sie scheint aufgrund von Problemen mit dem Schleifeneffekt nicht zu funktionieren (auf state.go ruft sie den übergeordneten Status auf und so weiter, und sie wird zu einer Schleife).
$stateProvider
.state('main', {
url: '/main',
templateUrl: 'main.html',
onEnter: function($state) {
$state.go('main.street');
}
})
.state('main.street', {
url: '/street',
templateUrl: 'submenu.html',
params: {tabName: 'street'}
})
Hier habe ich eine Plunker-Demo erstellt .
Im Moment funktioniert alles, außer dass ich nicht die Standardregisterkarte geöffnet habe und genau das brauche ich.
Vielen Dank für Ihre Vorschläge, Meinungen und Ideen.
$state.go(to.redirectTo, params, {location: 'replace'});
Dadurch ersetzt der neue Status den vorherigen Status (dh den Status, von dem wir umgeleitet werden) im Verlauf. Siehe Dokumente für $ state.go: angular-ui.github.io/ui-router/site/#/api/…'$stateChangeStart'
zu'$stateChangeSuccess'
Selbst wenn diese von Radim vorgeschlagene Lösung genau den Job erledigte, musste ich mich an die Unterregisterkarte (Status) jeder Registerkarte erinnern.
Also habe ich eine andere Lösung gefunden, die das Gleiche tut, sich aber auch an jeden Tab-Unterzustand erinnert.
Ich musste nur UI-Router-Extras installieren und die Deep State Redirect- Funktion verwenden:
Danke dir!
quelle
Ab Version 1.0 des UI-Routers wird eine
redirectTo
Eigenschaft unterstützt . Beispielsweise:quelle
Seit Version 1.0 von ui-router wurde mit IHookRegistry.onBefore () ein Standard-Hook eingeführt, wie im Beispiel Data Driven Default Substate unter http://angular-ui.github.io/ui-router/feature-1.0/ gezeigt. interfaces / Transition.ihookregistry.html # onbefore
quelle
$transitions.onBefore({ to: state => state.defaultSubstate != null }, trans => trans.router.stateService.target(trans.to().defaultSubstate));
quelle
Wenn jemand hierher kommt, um eine Antwort zu erhalten, wie eine einfache Umleitung für einen Status implementiert werden kann, und wie mir passiert ist, hat er nicht die Möglichkeit, den neuen Router zu verwenden ...
Wenn Sie können, ist die Antwort von @bblackwo natürlich großartig:
Wenn Sie es nicht können, leiten Sie es einfach manuell um:
Ich hoffe, es hilft!
quelle