为什么md工具提示不适用于md dummy选项卡

时间:2015-07-07 05:19:58

标签: javascript angularjs angular-material

我正在使用棱角分明的材料。

当我创建自己的指令并将其添加到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 dummy选项卡?

1 个答案:

答案 0 :(得分:3)

<md-tooltip>未附加到<md-dummy-tab>,因为它不会在<md-tab-label>内呈现任何HTML代码。当您触发要显示的工具提示时,其模板将附加到最近的父<md-content>

  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;
 }