Sapui5 检索Toast消息高度

Sapui5 检索Toast消息高度,sapui5,Sapui5,在web应用程序上工作时,我需要显示从WS-Server检索到的一条或多条警告消息 为此,我使用了sap.m.ToastMessage.show及其offset属性,因此,如果有多条消息,我可以一条接一条地显示它们 以下代码实际上适用于我: showToastMessages: function(warnings){ var msgList = warnings.split("|"); for(var i = 0 ; i < msgList.len

在web应用程序上工作时,我需要显示从WS-Server检索到的一条或多条警告消息

为此,我使用了
sap.m.ToastMessage.show
及其offset属性,因此,如果有多条消息,我可以一条接一条地显示它们

以下代码实际上适用于我:

    showToastMessages: function(warnings){
        var msgList = warnings.split("|");

        for(var i = 0 ; i < msgList.length; i++){
            var xset = 0 ;
            var yset = -50 + (i * -70);
            sap.m.MessageToast.show(msgList[i],{
                offset: xset.toString() + " " + yset.toString()
            });
        }
    }

您的偏移量应基于消息的长度和宽度。因为宽度是固定的。您可以计算出每行需要多少(对于
15em
的默认宽度,大约需要25-30个字符)

也考虑<代码>填充< /代码>。(将是常数)


这里唯一的变量是您上一条消息的长度,您可以通过它来决定
偏移量
属性。

谢谢Sunil,我刚刚修改了消息中编辑的函数。思想不是更好的解决方案,所以我不得不使用康斯坦斯。
    showToastMessages: function(warnings){
        var msgList = warnings.split("|");
        var msgHeight = 0;

        for(var i = 0 ; i < msgList.length; i++){

            var xset = 0 ;
            var yset = -50 - msgHeight;

            sap.m.MessageToast.show(msgList[i],{
                offset: xset.toString() + " " + yset.toString()
            });
            msgHeight = msgHeight + retrieveMsgToastHeight() + MSG_OFFSET;
        }
    }
    showToastMessages: function(warnings){
        var msgList = warnings.split("|");

        // CONSTANTS
        var PADDING = 25;// 45;     // Padding height of each message
        var CHAR_PER_LINE = 28;     // Aprox. number of characters per line in a toast message
        var HEIGHT_PER_LINE = 20;   // Height in pixels that is each line
        var MSG_OFFSET = 52;        // Vertical offset in order to avoid bottom margin
        var BTW_MSG_OFFSET = 5;     // Separation between messages

        var msgHeight = MSG_OFFSET;

        for(var i = 0 ; i < msgList.length; i++){
            var xset = 0 ;
            var yset = - msgHeight;

            var msgLen = msgList[i].length;
            if(msgLen !== 0){

                var linesNumber = Math.trunc(msgLen/CHAR_PER_LINE) + 1;

                sap.m.MessageToast.show(msgList[i],{
                    offset: xset.toString() + " " + yset.toString()
                });

                msgHeight = msgHeight + linesNumber*HEIGHT_PER_LINE + PADDING + BTW_MSG_OFFSET;
            }
        }
    },