Не так просто, как кажется, хотя он по-прежнему возможен без каких-либо сторонних решений.
Давайте предположим, что маршруты (в manifest.json) являются:
"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"
}
]
Так что в этом случае вы хотели бы получить текущее имя: Создать, Редактировать или View.
примечание 1: В моем случае есть один вид/контроллер («MyView») для обработки трех различных типов дисплеев, но это не имеет значения - вы можете отдельные мнения/контроллеры, а также. (см. примечание 2 для более подробной информации).
Итак, вот что вам нужно сделать для того, чтобы получить эти имена маршрутов:
Шаг 1:
В данном контроллере (MyView), использовать маршрутизаторы attachRouteMatched метод в встроенном onInit метод:
onInit: function(){
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.attachRouteMatched(this.routeMatched, this);
}
Шаг 2:
В том же контроллере, в основном непосредственно по методу OnInit, создать метод обратного вызова (в моем случае это называется routeMatched):
routeMatched: function(oEvent){
var oParameters = oEvent.getParameters(),
this.routeName = oParameters.name; // Yay! Our route name!
}
Шаг 3
Теперь, когда у вас есть доступ к экземпляру вашего контроллера, вы просто называете его новым свойством: routeName. В большинстве случаев (услуги, пользовательские элементы управления, тот же контроллер) будет:
this.routeName;
примечание 2: Очевидная проблема этого подхода является тот факт, что вам придется повторить эти шаги для каждого который должен иметь доступ к запущенному в данный момент маршруту.
Это возвращает все маршруты. И так или иначе, чтобы получить текущий маршрут? –
router._sActiveRouteName выглядит как указание активного имени маршрута. – Huseyin