为什么在这种情况下会超出最大调用堆栈?

Why is the maximum call stack exceeded in this case?

首先:我已经知道这个错误的含义,并且我在Whosebug上做了研究。 我是初学者,我不明白在这种特殊情况下这个错误是如何导致的以及如何解决它。

当我尝试导航回上一个视图时出现错误:

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 并无限重复。