Sapui5 导航时未触发函数onExit

Sapui5 导航时未触发函数onExit,sapui5,Sapui5,当从一个屏幕导航到另一个屏幕时,必须调用onExit来释放资源。但是,它不会被触发。这是我的代码: function (BaseController, JSONModel, formatter, Filter, FilterOperator) { "use strict"; return BaseController.extend("app.controller.Worklist", { _oCatalog: null, _oResourceB

当从一个屏幕导航到另一个屏幕时,必须调用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);
            }
        }

    });         

});

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

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

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

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

谢谢你的回复。。如果onexit没有被触发……那么如何释放像片段这样的资源……这样我就可以在导航视图中使用,而无需重复ID。在onexit中销毁片段是可以的。如果您有重复的id问题,您还有另一个问题。也许你可以用相关的细节来扩展你的问题。onexit不会触发…如果我在onexit中放置fragment destroy,它会释放资源吗?当你导航时需要销毁你的片段时,你还有另一个问题!通常,您应该在onExit中释放资源(当您的组件被销毁时),而不是在视图之间导航时。请用您得到的问题扩展问题,或接受答案,并打开一个关于您的重复id问题的详细问题。感谢您的回复。。如果onexit没有被触发……那么如何释放像片段这样的资源……这样我就可以在导航视图中使用,而无需duplicateid@anilkumar不需要显式销毁片段,因为当父片段被销毁时,它将一起被销毁。如果您遇到重复ID问题,请分析您在何处创建该片段,而不检查它是否已经创建。