在Web应用程序上工作时,我需要显示从WS中检索到的一条或多条警告消息。
出于这个目的,我正在使用sap.m.ToastMessage.show
及其偏移属性,因此,如果有多条消息,我可以将它们一个显示在另一个上面。
以下代码实际上对我有用:
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()
});
}
}
但是我想从之前的消息中检索高度,所以我可以这样迭代:
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;
}
}
所以我可以肯定,使用msgHeight
变量的不同消息之间没有重叠。
EDITED
正如Sunil所提出的,我修改了我的功能如下:
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;
}
}
},
答案 0 :(得分:0)
您的偏移量应基于消息的长度和<{3}} 的宽度。由于宽度是固定的。您可以计算出每条线的数量(默认情况下约为25-30 Chars 宽度 15em
)
还要考虑所涉及的padding
。(将是不变的)
此处只有变量是您可以决定offset
属性的上一条消息的长度。