Sapui5 导航时未触发函数onExit
当从一个屏幕导航到另一个屏幕时,必须调用onExit来释放资源。但是,它不会被触发。这是我的代码:Sapui5 导航时未触发函数onExit,sapui5,Sapui5,当从一个屏幕导航到另一个屏幕时,必须调用onExit来释放资源。但是,它不会被触发。这是我的代码: function (BaseController, JSONModel, formatter, Filter, FilterOperator) { "use strict"; return BaseController.extend("app.controller.Worklist", { _oCatalog: null, _oResourceB
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问题,请分析您在何处创建该片段,而不检查它是否已经创建。