2015-07-07 1 views
7

Я использую угловой материал.Почему md tooltip не применяется к вкладке md dummy

Когда я создаю свою собственную директиву и добавить его в мкр-вкладки этикетки, как

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

Тогда обычай применяется директива в какой-то «мкр-манекена-вкладке» также.

Но если я дам mdtooltop в мкр-закладки этикетки, как

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

тогда нет мкр-подсказке применяется к классу «мкр-манекена-вкладка»

Я попытался найти внутри код mdtooltip, но не мог получить никакой подсказки.

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

Как я могу сделать то же самое для моей пользовательской директивы, т.е. пользовательские директивы не должны применяться к мд вкладке манекена?

ответ

3

<md-tooltip> не прилагается к <md-dummy-tab>, потому что он не отображает HTML-код внутри <md-tab-label>. Его шаблон добавляется к ближайшему родителю <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; 
} 
+0

Они наблюдают за видимой области видимости переменной. Но как они узнают, какой элемент отображается на экране, а какой - нет? Обычно, чтобы проверить, является ли элемент видимым на экране, мы должны проверить его свойство отображения или проверить offsetHeight. Но они не делают ничего подобного в своем коде. Итак, как они знают о видимости элемента? – Santosh