Включить подсказку angular-ui для пользовательских событий



Я пытаюсь использовать функцию подсказки angular-ui, чтобы показать моему пользователю, что определенное поле недопустимо, но кажется, что подсказка может быть показана только на некоторых предопределенных триггерах. Есть ли способ, с помощью которого я могу вызвать подсказку, кроме этих триггеров?



например:



<input
type="text"
tooltip="Invalid name!"
tooltip-position="right"
tooltip-trigger="myForm.username.$invalid">
744   5  

5 ответов:

вот такой трюк.

Twitter Bootstrap tooltips (что угловой-UI полагается на) есть возможность указать событие триггера с дополнительным атрибутом, как в data-trigger="mouseenter". Это дает вам способ изменения триггера программно (с угловым):

<input 
  ng-model="user.username"
  name="username"
  tooltip="Some text" 
  tooltip-trigger="{{{true: 'mouseenter', false: 'never'}[myForm.username.$invalid]}}" 
/>

когда username долларов недействительным,tooltip-triggerвыражение будет оценено как 'mouseenter' и подсказка появится. В противном случае триггер будет иметь значение 'never', который в свою очередь не запустите подсказку.

EDIT:

@cotten (в комментариях) упоминает сценарий, в котором всплывающая подсказка застревает и не уходит, даже если модель действительна. Это происходит, когда мышь остается над полем ввода во время ввода текста (и модель становится допустимой). Как только проверка модели оценивается в true,tooltip-triggerперейдет в "никогда".

UI Bootstrap использует так называемый triggerMap чтобы определить, на каких событиях мыши показывать / скрывать подсказка.

// Default hide triggers for each show trigger
var triggerMap = {
  'mouseenter': 'mouseleave',
  'click': 'click',
  'focus': 'blur'
};

как вы можете видеть, эта карта ничего не знает о событии "никогда", поэтому она не может определить, когда закрыть подсказку. Таким образом, чтобы сделать трюк играть красиво нам нужно только обновить эту карту с нашей собственной пары событий и UI Bootstrap будет знать, какое событие наблюдать для закрытия всплывающей подсказки, когда tooltip-trigger имеет значение "никогда".

app.config(['$tooltipProvider', function($tooltipProvider){
  $tooltipProvider.setTriggers({
    'mouseenter': 'mouseleave',
    'click': 'click',
    'focus': 'blur',
    'never': 'mouseleave' // <- This ensures the tooltip will go away on mouseleave
  });
}]);

PLUNKER

Примечание: $ tooltip provider предоставляется пользовательский интерфейс.загрузчик.tooltip " модуль, и это позволяет нам глобально настроить наши подсказки в конфигурации приложения.

Я пробовал что-то другое

tooltip="{{(myForm.input1id.$invalid) ? 'You have an error with this field' : ''}}"

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

начиная с версии 0.12.0 и далее, tooltip-tigger больше не наблюдается (поэтому вы не можете изменить его программно).

можно использовать tooltip-enable чтобы получить такое же поведение. Смотрите дополнительную информацию здесь:https://github.com/angular-ui/bootstrap/issues/3372

вы также можете добавить tooltip-enable вместо tooltip-trigger на своем поле.

<input
    type="text"
    tooltip="Invalid name!"
    tooltip-position="right"
    tooltip-enable="{{myForm.username.$invalid}}">

в этом случае, если имя пользователя является недопустимым ($invalid возвращает true) появится подсказка.

в соответствии с новой версией документа я предлагаю использовать ниже HTML. ответ Стьюи не помогает с последней версией.

<input class="form-control" name="name" type="text" required ng-model="name"
                   uib-tooltip="name required" tooltip-is-open="formname.name.$invalid" 
tooltip-trigger="none" tooltip-placement="auto top" />

заменить только имя формы в tooltip-is-open="formname.name.$invalid"

вы хорошо идти.

Comments

    Ничего не найдено.