Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Popover作为工具提示的SAPUI5_Sapui5 - Fatal编程技术网

使用Popover作为工具提示的SAPUI5

使用Popover作为工具提示的SAPUI5,sapui5,Sapui5,我正试图使用作为一些控件的“丰富工具提示”。这符合SAP的建议,因为SAP.ui.commons库现在已不推荐使用。要添加到标准字符串工具提示的文本太多。我还没有找到一种直接使用popover作为工具提示的方法,这就是为什么我扩展了控件来处理popover 我已经让popover正常工作,但是当我与控件交互时,出现以下错误: 未捕获错误:未能从../controls/TooltipBaseRenderer.js:404加载“myNewToolTip/controls/TooltipBaseRen

我正试图使用作为一些控件的“丰富工具提示”。这符合SAP的建议,因为SAP.ui.commons库现在已不推荐使用。要添加到标准字符串工具提示的文本太多。我还没有找到一种直接使用popover作为工具提示的方法,这就是为什么我扩展了控件来处理popover

我已经让popover正常工作,但是当我与控件交互时,出现以下错误:

未捕获错误:未能从../controls/TooltipBaseRenderer.js:404加载“myNewToolTip/controls/TooltipBaseRenderer.js”-未找到

我从中看到,这是因为TooltipBase类是一个抽象类,因此没有渲染器。但是,因为我已经在使用popover,所以我不需要渲染任何东西。我尝试添加TooltipBaseRenderer.js,但只有一个空的render类。但UI5也不喜欢这样

我的问题是我应该怎么做,我看到两种选择:

  • 可能有一种简单的方法可以将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),请看这个<强>实例:< /强>


不过,请记住,工具提示一般不应包含关键信息,因为它缺乏可发现性

工具提示(…)不应包含关键信息。它们也不应包含冗余信息

作为一个友好的提醒:)不要让人们徘徊寻找东西