Ecco un trucco.
Twitter Bootstrap tooltips (su cui l'interfaccia utente angolare si basa) ha un'opzione per specificare l'evento di attivazione con un attributo aggiuntivo come in data-trigger="mouseenter"
. Questo ti dà un modo di cambiare il grilletto di programmazione (con angolare):
<input
ng-model="user.username"
name="username"
tooltip="Some text"
tooltip-trigger="{{{true: 'mouseenter', false: 'never'}[myForm.username.$invalid]}}"
/>
Così, quando username
è $ valido, l'espressione tooltip-trigger
valuteranno a 'mouseenter'
e tooltip verranno visualizzati. In caso contrario, il trigger verrà valutato su 'never'
, che in cambio non attiverà il suggerimento.
EDIT:
@cotten (nei commenti) menziona uno scenario in cui tooltip rimane bloccata e non andrà via anche se il modello è valido. Ciò accade quando il mouse rimane sopra il campo di immissione mentre viene immesso il testo (e il modello diventa valido). Non appena la convalida del modello viene valutata come vera, lo tooltip-trigger
passa a "mai".
UI Bootstrap utilizza un cosiddetto triggerMap
per determinare su quali eventi del mouse mostrare/nascondere il suggerimento.
// Default hide triggers for each show trigger
var triggerMap = {
'mouseenter': 'mouseleave',
'click': 'click',
'focus': 'blur'
};
Come si può vedere, questa mappa non sa nulla del "mai" evento, quindi è in grado di determinare quando chiudere il tooltip. Quindi, per fare in modo che il trucco si svolga bene, abbiamo solo bisogno di aggiornare questa mappa con la nostra coppia di eventi e UI Bootstrap saprà quale evento osservare per la chiusura del suggerimento quando tooltip-trigger
è impostato su "mai".
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
Nota: fornitore di tooltip $ è esposta dal modulo "ui.bootstrap.tooltip" e ci permette di configurare a livello globale le nostre descrizioni dei comandi in configurazione app.
[tooltip QuantumUI] (http://angularui.net/) di ** angularui.net ** ha alcune opzioni più flessibili. –