在从一个屏幕导航到另一个屏幕时,必须调用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);
}
}
});
});
答案 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)
这是预期的行为,因为通过路由机制导航不会破坏相应的视图。这很有意义,因为视图通常在其父组件的生命周期内不会发生变化。此外,如果相应的路由匹配,则需要重复实例化视图,这会降低应用程序的速度。