javascript - 为什么在这种情况下超过了最大调用堆栈?
问题描述
首先:我已经知道这个错误的含义,并且我对stackoverflow进行了研究。我是初学者,我不明白这个错误在这种特殊情况下是如何引起的以及如何解决它。
当我尝试导航回最后一个视图时出现错误:
sap-ui-core.js:976 Uncaught RangeError: Maximum call stack size exceeded
at d.a.fireEvent (sap-ui-core.js:976)
at d.fireNavigate (sap-ui-core.js:573)
at d.N._backTo (NavContainer.js:6)
at d.N.back (NavContainer.js:6)
at constructor.navigation (wiegung.controller.js:106)
at f.onBeforeShow (wiegung.view.js:17)
at f.a._handleEvent (sap-ui-core.js:961)
at d.N._backTo (NavContainer.js:6)
at d.N.back (NavContainer.js:6)
at constructor.navigation (wiegung.controller.js:106)
所以,这是我的看法:
onBeforeShow : function(oEvent) {
if (oEvent.isBack){
this.oController.navigation('back');
} else {
this.oController.initData(oEvent.data);
this.oController.getUiControl();
this.oController.getDevices();
}
},
我的控制器:
navigation : function(oSite, oData) {
var oApp = sap.ui.getCore().byId("app");
if (oSite == 'back') {
oApp.back();
} else {
oApp.to(oSite, "slide", oData);
}
},
谢谢您的帮助!
解决方案
onBeforeShow
呼唤navigation
那个呼唤oApp.back
那个oApp._backTo
呼唤_handleEvent
那个呼唤onBeforeShow
并且无限重复。
推荐阅读
- python - 如何使用烧瓶中的变量访问 self.context 属性
- flutter - 在通道 plugins.flutter.io/google_maps_0 上找不到方法 camera#animate 的实现
- android - simple_pdf_viewer 在 api 级别 30 上崩溃 [Flutter]
- python - DoCplex 中的最优差距
- php - 添加会员或身份证到期日提醒
- php - 如何在 Laravel 中按时发送或不发送条件检查数据
- wpf - 如何获得 UI 元素的轮廓?
- python - 如何在函数python中编写类实例的返回类型
- angular - 如何将时间戳(如“2021-07-18T9:33:58.000Z”)转换为 7 月 18 日(日期)或上午 9:33(时间)的角度?
- javascript - React 如何以平滑的渲染打开子组件?