Функция обработчика событий SAPUI5 для просмотра отпуска
Я объявил контроллер для представления в моем приложении SAPUI5. Теперь я хочу выполнять задачи, когда представление покидает пользователь.
Уже есть возможность добавить функцию обратного вызова в attachRoutePatternMatched
для выполнения задач, когда пользователь просматривает представление, мне нужна эквивалентная функция для обработки выхода из представления. Я использую SplitContainer
как родительский контейнер
onInit: function () {
this._oRouter = sap.ui.core.UIComponent.getRouterFor(this);
this._oRouter.attachRoutePatternMatched(this._routePatternMatched, this);
},
_routePatternMatched: function (oEvent) {
var that = this;
var sRouteTargetName = oEvent.getParameter("name");
if (sRouteTargetName === "myView") {
// perform tasks if the view is opened by the user
}
},
2 ответа
Предполагаете, что вы имеете в виду навигацию назад? Если у вас есть кнопка "назад", которая, по-видимому, вам нужна, поместите свои действия в эту функцию. Например, у вашей детали / мастера есть кнопка navBack на панели инструментов, поэтому поместите свою логику в обработчик событий кнопки...
Вы можете попробовать, если это работает:
navAway: function(viewName, callback) {
this._oRouter.navTo(viewName);
if(callback && typeof(callback) === "function") {
callback();
}
}
например this.navAway("myView", function() { //doStuff });
Вы можете добиться этого с помощью BeforeHide
делегат для дочернего элемента NavContainer, который часто является представлением:
onInit: function() {
this._navDelegate = { onBeforeHide: this.onBeforeLeave };
this.getView()/*<-- navContainerChild*/.addEventDelegate(this._navDelegate, this);
},
onBeforeLeaving: function(event) {
// ... do something
},
onExit: function() {
// detach events, delegates, and references to avoid memory leak
this.getView().removeEventDelegate(this._navDelegate);
this._navDelegate = null;
},
Пример: https://embed.plnkr.co/wp6yes?show=controller%2FNext.controller.js,preview%23next.
- Справка по API:
NavContainerChild
- Справка по API:
sap.ui.core.Element#addEventDelegate
Для других событий, связанных с навигацией, см. Разделы документации, упомянутые в /questions/48916428/voznikaet-li-sobyitie-pri-perehode-na-stranitsu-s-ispolzovaniem-thisgetownercomp/48916445#48916445.