Ich habe heute mit dem UI-Router herumgespielt, um das Gerüst in Ionic besser zu verstehen, und eine Sache, die mir aufgefallen ist, war, dass sie dem abstrahierten Zustand von "Tabs" eine URL geben.
Das einzige Mal, dass ich jemals abstrakte Zustände verwendet habe, habe ich eine leere Zeichenfolge als URL verwendet und festgestellt, dass bei einem versehentlichen Versuch, zu einem abstrahierten Zustand zu navigieren (im Gegensatz zum untergeordneten Zustand), folgende Fehlermeldung angezeigt wird:
Übergang zum abstrakten Status '[insertAbstractStateHere]' nicht möglich
bearbeiten:
"Außerdem bekomme ich beim Experimentieren ein großes Gänseei, wenn ich versuche, meinem abstrakten Zustand (außerhalb von Ionic) eine URL zuzuweisen und trotzdem die verschachtelten Zustandsansichten zu rendern. Es wird überhaupt nichts angezeigt."
Die oben zitierte Aussage ist falsch! Ich habe es in Plunker erneut versucht und die verschachtelten Zustände sind aufgetaucht .
angular.module('routingExperiments', ['ui.router'])
.config(function($urlRouterProvider, $stateProvider) {
$stateProvider
.state('abstractExperiment', {
abstract: true,
url: '', //<--- seems as if any string can go here.
templateUrl: 'abstractExperiment.html'
})
.state('abstractExperiment.test1', {
url: '/test1',
templateUrl: 'abstractTest1.html'
});
});
Anscheinend habe ich es tatsächlich falsch gemacht. Meine neue Frage lautet also:
Gibt es einen Grund, warum man bei der Verwendung abstrakter Zustände einen benannten Zustand anstelle einer leeren Zeichenfolge verwenden würde, oder ist es nur eine Stilwahl?
'/home'
? Das ist an dieser Stelle eher die Quelle meiner Verwirrung. Warum eins im Gegensatz zum anderen? Es scheint keinen Unterschied zu machen.parent: '<state name>'
in untergeordneten Statusoptionen gesehen. Warum fehlt es hier? Kann der UI-Router die Beziehung aus Statusnamen mithilfe von Punkt als Trennzeichen zuordnen? Entschuldigung, ich habe gerade angefangen, UI-Router zu lernen / zu benutzen..state('home', { url: '/home', abstract:true, controller: "HomeController", templateUrl:"path to your html" }) .state('home.list', { url:"", controller: "HomelistController", templateUrl:"path to your html" })
quelle
Verwenden Sie den abstrakten Status und aktivieren Sie den UI-Router für die Navigation, ohne den Controller / die Seite neu zu laden.
quelle