首页 > 解决方案 > 为什么在这种情况下超过了最大调用堆栈?

问题描述

首先:我已经知道这个错误的含义,并且我对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);
        }
    },

谢谢您的帮助!

标签: javascriptsapui5

解决方案


onBeforeShow呼唤navigation那个呼唤oApp.back那个oApp._backTo呼唤_handleEvent那个呼唤onBeforeShow并且无限重复。


推荐阅读