SAPUI5 usando Popover como uma dica de ferramenta
Estou tentando usar osap.m.Popover como uma "dica de ferramenta rica" para alguns controles. Isso é conforme recomendação da SAP, porque a biblioteca sap.ui.commons agora está obsoleta. Temos muito texto que queremos adicionar à dica de ferramenta de string padrão. Não descobri uma maneira de usar o popover diretamente como uma dica de ferramenta, e é por isso que estendi oTooltipBase controle para lidar com o popover.
O popover está funcionando bem. No entanto, quando interajo com meu controle, recebo o seguinte erro:
Erro não capturado: falha ao carregar 'myNewToolTip / controls / TooltipBaseRenderer.js' de ../controls/TooltipBaseRenderer.js: 404 - Não encontrado
Eu vejo por estestópicos isso ocorre porque a classe TooltipBase é uma classe abstrata e, portanto, não possui um renderizador. No entanto, como já estou usando o popover, não preciso renderizar nada. Eu tentei adicionar o TooltipBaseRenderer.js e apenas tenho uma classe de renderização vazia. Mas a UI5 também não gosta disso.
Minha pergunta é o que devo fazer, vejo duas opções:
Provavelmente, existe uma maneira simples de usar o popover como uma dica de ferramenta, que sou burra demais para descobrir (lembre-se, prefiro vinculá-lo diretamente na visualização XML).Descobrir uma maneira de suprimir a chamada do representante, pois eu não preciso dela.Este é o meu código-fonte atual para o controle personalizado:
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;
}
});
});