使用Popover作为工具提示的SAPUI5
我正试图使用作为一些控件的“丰富工具提示”。这符合SAP的建议,因为SAP.ui.commons库现在已不推荐使用。要添加到标准字符串工具提示的文本太多。我还没有找到一种直接使用popover作为工具提示的方法,这就是为什么我扩展了控件来处理popover 我已经让popover正常工作,但是当我与控件交互时,出现以下错误: 未捕获错误:未能从../controls/TooltipBaseRenderer.js:404加载“myNewToolTip/controls/TooltipBaseRenderer.js”-未找到 我从中看到,这是因为TooltipBase类是一个抽象类,因此没有渲染器。但是,因为我已经在使用popover,所以我不需要渲染任何东西。我尝试添加TooltipBaseRenderer.js,但只有一个空的render类。但UI5也不喜欢这样 我的问题是我应该怎么做,我看到两种选择:使用Popover作为工具提示的SAPUI5,sapui5,Sapui5,我正试图使用作为一些控件的“丰富工具提示”。这符合SAP的建议,因为SAP.ui.commons库现在已不推荐使用。要添加到标准字符串工具提示的文本太多。我还没有找到一种直接使用popover作为工具提示的方法,这就是为什么我扩展了控件来处理popover 我已经让popover正常工作,但是当我与控件交互时,出现以下错误: 未捕获错误:未能从../controls/TooltipBaseRenderer.js:404加载“myNewToolTip/controls/TooltipBaseRen
- 可能有一种简单的方法可以将popover用作工具提示,我实在是太笨了,无法理解(请记住,我更喜欢直接在XML视图中绑定它)
- 找出一种抑制渲染器调用的方法,因为我不需要它
sap.ui.define([
"sap/m/Popover"
], function (Popover) {
"use strict";
return sap.ui.core.TooltipBase.extend("myNewToolTip.TooltipBase", {
metadata: {
properties: {
title : {}
},
events: {
"onmouseover" : {},
"onmouseout" : {}
}
},
oView: null,
setView: function(view) {
this.oView = view;
},
onmouseover : function(oEvent) {
var that = this;
if (!this.delayedCall){
this.delayedCall = setTimeout(function() {
if (!that.oPopover){
that._createQuickView();
}
}, 500);
}
},
onmouseout: function(oEvent) {
if (this.oPopover){
this.closePopover();
this.delayedCall = undefined;
}
else{
clearTimeout(this.delayedCall);
this.delayedCall = undefined;
}
},
_createQuickView: function() {
var sTitle = this.getTitle();
this.oPopover = new Popover({
title: sTitle
});
this.oPopover.openBy(this.getParent());
},
closePopover: function(){
this.oPopover.close();
this.oPopover = undefined;
}
});
});
不需要创建自定义控件,只需在鼠标悬停上显示弹出框即可。正如你所说,有一个更简单的方法: 其中一个是
onmouseover
,可以通过以下方式实现:
this.byId(“myTargetControl”).addEventDelegate({
onmouseover:function(){
//打开这里
}
});
演示:
扩展
sap.ui.core.TooltipBase
如果您仍然考虑扩展ToeTypBASE(没有Popover),请看这个<强>实例:< /强>
不过,请记住,工具提示一般不应包含关键信息,因为它缺乏可发现性 工具提示(…)不应包含关键信息。它们也不应包含冗余信息 作为一个友好的提醒:)不要让人们徘徊寻找东西