首页 > 解决方案 > sap.m.MessageBox.confirm 在页面刷新时显示未定义 [F5]

问题描述

每当我使用 F5 刷新页面时,都会出现错误:

在调试中,我看到 totalRtn 有值,所以它转到 else - 当控制转到 sap.m.MessageBox.confirm 时 - 我收到一条错误消息“Uncaught TypeError: Cannot read property 'confirm' of undefined”

if (totalRtn <= 0) {
                    sap.m.MessageToast.show("Cannot return 0 quantity");
                } else {

                    sap.m.MessageBox.confirm("You are returning total of " + totalRtn + " items from this order", {
                        actions: [sap.m.MessageBox.Action.YES, sap.m.MessageBox.Action.NO],
                        styleClass: "messageBoxError",
                        onClose: function(oAction) {
                            if (oAction === sap.m.MessageBox.Action.YES) {
                                ServiceUtils.createEntry(this, oEntry, sEntity, sURL).done(function(data) {
                                    var jsonModel = new JSONModel(data);
                                    var returnNumber = jsonModel.getProperty("/data/SalesDocument");
                                    sap.m.MessageToast.show("Return " + returnNumber + " is created successfully");
                                    vc.getOwnerComponent().getRouter().navTo("stockrooms", {
                                        "companyId": vc.companyId
                                    }, false);

                                }).fail(function(error) {
                                    sap.m.MessageToast.show("Error in return processing");
                                });
                            } else {
                                sap.m.MessageToast.show("Return not confirmed");
                            }
                        }
                    });

标签: sapui5

解决方案


您需要加载模块“sap.m.MessageBox”

尝试这个:

jQuery.sap.require("sap.m.MessageBox");

if (totalRtn <= 0) {
                    sap.m.MessageToast.show("Cannot return 0 quantity");
                } else {

                    sap.m.MessageBox.confirm("You are returning total of " + totalRtn + " items from this order", {
                        actions: [sap.m.MessageBox.Action.YES, sap.m.MessageBox.Action.NO],
                        styleClass: "messageBoxError",
                        onClose: function(oAction) {
                            if (oAction === sap.m.MessageBox.Action.YES) {
                                ServiceUtils.createEntry(this, oEntry, sEntity, sURL).done(function(data) {
                                    var jsonModel = new JSONModel(data);
                                    var returnNumber = jsonModel.getProperty("/data/SalesDocument");
                                    sap.m.MessageToast.show("Return " + returnNumber + " is created successfully");
                                    vc.getOwnerComponent().getRouter().navTo("stockrooms", {
                                        "companyId": vc.companyId
                                    }, false);

                                }).fail(function(error) {
                                    sap.m.MessageToast.show("Error in return processing");
                                });
                            } else {
                                sap.m.MessageToast.show("Return not confirmed");
                            }
                        }
                    });

问候!


推荐阅读