Функция обработчика событий 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.


Для других событий, связанных с навигацией, см. Разделы документации, упомянутые в /questions/48916428/voznikaet-li-sobyitie-pri-perehode-na-stranitsu-s-ispolzovaniem-thisgetownercomp/48916445#48916445.

Другие вопросы по тегам