【问题标题】:Why md tooltip is not applied to md dummy tab为什么 md 工具提示不适用于 md 虚拟选项卡
【发布时间】:2015-09-24 10:50:56
【问题描述】:

我正在使用棱角材料。

当我创建自己的指令并将其添加到 md-tab-label 时,例如

<md-tab-label>
<custom-directive>
Label
</cutom-directive>
</md-tab-label>

然后自定义指令也应用于某些“md-dummy-tab”。

但是如果我把 mdtooltop 给 md-tab-label ,就像

<md-tab-label>
Label
<md-tooltip>Label</md-tooltip>
</md-tab-label>

那么没有 md-tooltip 应用于“md-dummy-tab”类

我尝试在 mdtooltip 代码中搜索,但找不到任何线索。

https://github.com/angular/material/blob/master/src/components/tooltip/tooltip.js

我怎样才能对我的自定义指令做同样的事情,即自定义指令不应该应用于 md 虚拟选项卡?

【问题讨论】:

    标签: javascript angularjs angular-material


    【解决方案1】:

    &lt;md-tooltip&gt; 不会附加到&lt;md-dummy-tab&gt;,因为它不会在&lt;md-tab-label&gt; 中呈现任何 HTML 代码。它的模板会在您触发工具提示显示时附加到最近的父级&lt;md-content&gt;

      scope.$watch('visible', function (isVisible) {
        if (isVisible) showTooltip();
        else hideTooltip();
      });
    

    -

    function showTooltip() {
      // Insert the element before positioning it, so we can get the position
      // and check if we should display it
      tooltipParent.append(element);
    
      // Check if we should display it or not.
      // This handles hide-* and show-* along with any user defined css
      if ( hasComputedStyleValue('display','none') ) {
        scope.visible = false;
        element.detach();
        return;
      }
    
      positionTooltip();
      angular.forEach([element, background, content], function (element) {
        $animate.addClass(element, 'md-show');
      });
    }
    

    -

    current       = getNearestContentElement(),
    tooltipParent = angular.element(current || document.body)
    

    -

     function getNearestContentElement () {
       var current = element.parent()[0];
       // Look for the nearest parent md-content, stopping at the rootElement.
       while (current && current !== $rootElement[0] && current !== document.body) {
         current = current.parentNode;
       }
       return current;
     }
    

    【讨论】:

    • 他们监视范围可见变量。但是他们怎么知道哪个元素显示在屏幕上,哪个元素没有显示呢?通常要检查元素是否在屏幕上可见,我们必须检查其显示属性或检查 offsetHeight。但是他们没有在他们的代码中做任何这样的事情。那么他们如何知道元素的可见性呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多