Hier ist ein Beispiel mit diesen beiden Routen:Ist es möglich, einen Zustandsparam zu haben, der wie ein Pfad mit angular-ui-router aussieht?
.state("test", {
url: "/test/{path}",
template: "<div ui-view></div>"
})
.state("test.child", {
url: "/child",
template: "<p>child</p>"
})
folgenden Webadressen wäre gültig:
/test/thing
würdetest
's Ansicht und$stateParams.path
ist"thing"
/test/thing/other
test
machen würde' render Ansicht und$stateParams.path
ist/test/thing/child
würdetest.child
machen ‚s Ansicht und$stateParams.path
ist"thing"
/test/thing/other/child
machen würdetest.child
‘ s Ansicht und$stateParams.path
ist"thing/other"
ich versucht habe, einen regulären Ausdruck auf dem path
param verwenden, so dass es eine beliebige Zeichenfolge außer etwas dauern würde, Das endet in "/child"
, aber das würde mich nur in meinen Standardzustand umleiten, da es keine Übereinstimmung mit dem Regexp gibt.
Meine aktuelle Problemumgehung ist, einen anderen Separator, wie ,
statt /
für meinen Weg param zu verwenden (gibt mir diese Art von Urls: /test/thing,other/child
), und ich werde Sie daran, dass für jetzt, aber ich frage mich immer noch wenn etwas von der Art möglich war.
'$ stateParams' sind nicht von Kindern afaik geerbt. Sie könnten sie stattdessen über 'resolve' verfügbar machen. Was hat in deinem Beispiel nicht funktioniert? – adamdport
Wenn Sie die Routen so umordnen, dass der Pfad '/ test/child' vor der ersten Route angezeigt wurde und kein Test-Kind war (also den Status in' testChild' oder ähnliches umbenennen), hat die erste Route Vorrang über die Sekunde. Wenn Sie Dinge auflösen, müssen Sie sie erneut auflösen, aber wenn Sie es benötigen, können Sie beide untergeordneten Elemente testen, also "test.main" und "test.child", und alle Abhängigkeiten in der Master-Route auflösen für jeden eine Unterroute haben und neu anordnen. Wenn Sie damit einverstanden sind, werde ich eine Antwort posten. – forrestmid