函数onExit在导航时不会触发

时间:2017-01-30 14:32:20

标签: sapui5

在从一个屏幕导航到另一个屏幕时,必须调用onExit来释放资源。但是它没有被触发。这是我的代码:

function (BaseController, JSONModel, formatter, Filter, FilterOperator) {
    "use strict";

    return BaseController.extend("app.controller.Worklist", {

        _oCatalog: null,
        _oResourceBundle: null,

        onInit: function() {
            this._oView = this.getView();           
        },

        onThirdScreen : function (oEvent) {
            this.getRouter().navTo("thirdscreen", {});
        },

        onExit: function() {
            if (this._Dialog) {
                this._Dialog.destroy(true);
            }
        }

    });         

});

2 个答案:

答案 0 :(得分:2)

正如@mattbtt所提到的,每次切换到另一个视图时都不会销毁视图,因此"退出"事件不会被触发。但是,你可以做的是从视图中处理onBeforeHide / onAfterHide事件。

onInit: function() {
    this._oView = this.getView();           
    this._oView.addEventDelegate({
        onBeforeHide: function(oEvent) {
            debugger;
        },

        onAfterHide: function(oEvent) {
            debugger;
        }
    }, this)
}

答案 1 :(得分:0)

这是预期的行为,因为通过路由机制导航会破坏相应的视图。这很有意义,因为视图通常在其父组件的生命周期内不会发生变化。此外,如果相应的路由匹配,则需要重复实例化视图,这会降低应用程序的速度。