Nicht so einfach wie es scheint, obwohl es immer noch ohne Lösungen von Drittanbietern möglich ist.
Nehmen wir an, dass die Routen (in manifest.json) sind:
"routes": [
{
"pattern": "",
"name": "Main",
"view": "main",
"targetAggregation": "pages"
},
{
"pattern": "create",
"name": "Create",
"view": "myView",
"targetAggregation": "pages"
},
{
"pattern": "edit/{id}",
"name": "Edit",
"view": "myView",
"targetAggregation": "pages"
},
{
"pattern": "view/{id}",
"name": "View",
"view": "myView",
"targetAggregation": "pages"
}
]
Also in diesem Fall würden Sie den aktuellen Namen bekommen: erstellen, bearbeiten oder Ansicht.
Anmerkung 1: In meinem Fall gibt es einen Blick/Controller („myView“) für drei verschiedene Arten von Displays Handhabung, aber es spielt keine Rolle - Sie können haben separate Ansichten/Controller als auch. (siehe Hinweis 2 für weitere Details).
Also hier ist, was Sie tun, um diejenigen Routennamen abzurufen:
Schritt 1:
Im gegebenen Controller (myView), verwenden Sie die Router Methode attachRouteMatched in der eingebauten onInit methode:
onInit: function(){
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.attachRouteMatched(this.routeMatched, this);
}
Schritt:
Im gleichen Controller, meist direkt unter der onInit Methode, erstellen Sie die Callback-Methode (in meinem Fall es heißt routeMatched):
routeMatched: function(oEvent){
var oParameters = oEvent.getParameters(),
this.routeName = oParameters.name; // Yay! Our route name!
}
Schritt 3
Jetzt, wo immer Sie Zugriff auf Ihre Controller-Instanz haben, rufen Sie einfach die neue Eigenschaft auf: routeName. In den meisten Fällen (Dienstleistungen, kundenspezifische Steuerungen, der gleiche Controller) wird es sein:
this.routeName;
Anmerkung 2: Das offensichtliche Problem mit diesem Ansatz ist die Tatsache, dass Sie diese Schritte für jeden wiederholen müßten Controller, der Zugriff auf die aktuell gestartete Route haben soll.
Dies gibt alle Routen zurück. Und gibt es da sowieso aktuelle Route? –
router._sActiveRouteName sieht so aus, als würde man den Namen der aktiven Route angeben. – Huseyin