2016-02-09 2 views
2

Я пытаюсь сделать некоторые всплывающие подсказки всегда активными или активировать их, когда моя мышь приближается (а не поверх кнопки) к элементу.Сделать md-tooltip всегда активным?

Сейчас у меня есть эта установка:

<!-- BUTTONS SIDEBAR MENU --> 
<div class="mini-sidebar-menu"> 
    <md-button aria-label="television" ng-click="television()" class="md-fab md-raised md-primary md-mini half"> 
    <md-tooltip md-direction="left" md-visible="showTooltip" md-autohide="false"> 
     scroll to 1 
    </md-tooltip> 
    </md-button> 
    <md-button aria-label="mejor imagen" ng-click="mejorImagen()" class="md-fab md-raised md-primary md-mini half"> 
    <md-tooltip md-direction="left" md-visible="showTooltip" md-autohide="false"> 
     scroll to 2 
    </md-tooltip> 
    </md-button> 
    <md-button aria-label="dvr" ng-click="dvr()" class="md-fab md-raised md-primary md-mini half"> 
    <md-tooltip md-direction="left" md-visible="showTooltip" md-autohide="false"> 
     scroll to 3 
    </md-tooltip> 
    </md-button> 
    <md-button aria-label="ppv" ng-click="ppv()" class="md-fab md-raised md-primary md-mini half"> 
    <md-tooltip md-direction="left" md-visible="showTooltip" md-autohide="false"> 
     <span class="md-body">scroll to 4</span> 
    </md-tooltip> 
    </md-button> 
    <md-button aria-label="paquetes" ng-click="paquetesTemporada()" class="md-fab md-raised md-primary md-mini half"> 
    <md-tooltip md-direction="left" md-visible="showTooltip" md-autohide="false"> 
     scroll to 5 
    </md-tooltip> 
    </md-button> 
    <md-button aria-label="on demand" ng-click="onDemand()" class="md-fab md-raised md-primary md-mini half"> 
    <md-tooltip md-direction="left" md-visible="showTooltip" md-autohide="false"> 
     scroll to 6 
    </md-tooltip> 
    </md-button> 
</div> 

они всегда находятся на правой части экрана, но они только точки, я хочу, чтобы иметь возможность показать подсказки, когда-либо мышь приближается, или Я прокручиваю вниз до определенного раздела страницы.

Сейчас у меня есть это как событие мыши, когда он приближается к правой части экрана:

var currentMousePos = { x: -1, y: -1 }; 
$scope.showTooltip = false; 

$(document).mousemove(function(event) { 
    currentMousePos.x = event.pageX; 
    currentMousePos.y = event.pageY; 

    if (currentMousePos.x > $(window).width()/1.6) { 
    $scope.showTooltip = true; 
    console.log('mouse to the right: ' + currentMousePos); 
    $('.mini-sidebar-menu').css({'opacity': '1'}); 
    } else { 
    $scope.showTooltip = false; 
    $('.mini-sidebar-menu').css({'opacity': '.1'}); 
    } 
}); 

Это делает непрозрачность идти вверх, но в то же время я хотел бы показать все подсказки, когда мышь добирается до этой позиции.

Теперь каждый из них получает активный класс, когда я прокручиваю вниз к определенной области, как это:

// FUNCTION TO MAKE SIDE MENU BUTTON ACTIVE DEPENDING ON WHICH SECTION 
$(window).scroll(function(){ 
    var windscroll = $(window).scrollTop(); 
    $('body .section').each(function(i){ 
    if ($(this).position().top <= windscroll + 85){ 
     $('.mini-sidebar-menu button.half').removeClass('active').addClass('md-mini'); 
     $('.mini-sidebar-menu button.half').eq(i).addClass('active').removeClass('md-mini'); 
    }; 
    }); 
}); 

и в то же время, было бы неплохо, чтобы показать всплывающую подсказку для этой конкретной кнопки, когда они достигают этот раздел страницы.

ВОПРОСЫ

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

  • Как сделать всплывающую подсказку, когда я прокручиваю вниз до определенного раздела, принадлежащего этой боковой панели.

ИССЛЕДОВАНИЯ

Я прочитал документацию на https://material.angularjs.org/latest/api/directive/mdTooltip и пытался возиться с параметрами, но без успеха.

+0

Эй, ddi вы это и работаете? Я получаю эту ошибку, если попытаюсь использовать обходное решение с двойным отрицанием: Ошибка: [$ compile: nonassign] Выражение '! (! Item.showTooltip)', используемое с директивой 'mdTooltip', не поддается назначению! – Xander

ответ

2

Если вы хотите сделать их всегда активными, то, очевидно, двусторонняя привязка данных перестает работать, если вы сделаете выражение, используемое в md-visible, более сложным, чем просто ссылка на поле.

Двойное отрицание md-visible="!(!showTooltip)" должно делать трюк в большинстве случаев.

+0

У меня была такая же проблема и я попробовал ваше решение, но я получаю следующую ошибку: Ошибка: [$ compile: nonassign] Выражение '! (! Item.showTooltip)', используемое с директивой 'mdTooltip', не может быть назначено! Любые идеи о том, что может быть неправильным? – Xander

+0

Он делает эту ошибку, но, похоже, ничего не влияет. Он просто не может назначить новое значение указанной переменной, которая сохраняет значение по-прежнему. Кажется, нет лучшего способа сделать это. –

+0

Да, вы правы, но также не особенно увлекаетесь идеей размещения компонента, который выдает ошибку на живую. Есть ли способ подавить эти ошибки? Благодаря! – Xander

Смежные вопросы