Estoy tratando de usar la información sobre herramientas de Bootstrap en una aplicación mía. Mi aplicación usa AngularJS Actualmente, tengo lo siguiente:
<button type="button" class="btn btn-default"
data-toggle="tooltip" data-placement="left"
title="Tooltip on left">
Tooltip on left
</button>
Creo que necesito usar
$("[data-toggle=tooltip]").tooltip();
Sin embargo, no estoy seguro. Sin embargo, incluso cuando agrego la línea anterior, mi código no funciona. Estoy tratando de evitar el uso de la interfaz de usuario bootstrap, ya que tiene más de lo que necesito. Sin embargo, si tuviera que incluir solo la información sobre herramientas, estaría abierto a eso. Sin embargo, no sé cómo hacer eso.
¿Alguien puede mostrarme cómo hacer que Bootstrap Tooltip funcione con AngularJS?
angularjs
twitter-bootstrap
twitter-bootstrap-tooltip
usuario2871401
fuente
fuente
Respuestas:
Para que la información sobre herramientas funcione en primer lugar, debe inicializarlos en su código. Ignorando AngularJS por un segundo, así es como haría que la información sobre herramientas funcionara en jQuery:
Esto también funcionará en una aplicación AngularJS siempre que no sea contenido renderizado por Angular (por ejemplo: ng-repeat). En ese caso, debe escribir una directiva para manejar esto. Aquí hay una directiva simple que funcionó para mí:
Luego, todo lo que tiene que hacer es incluir el atributo "información sobre herramientas" en el elemento en el que desea que aparezca la información sobre herramientas:
¡Espero que ayude!
fuente
$(element).tooltip({html: 'true', container: 'body'})
antes de llamar a la descripción emergente como un ejemplo sobre cómo proporcionar opciones personalizadas.element.tooltip()
se puede usar en lugar de jQuery.La mejor solución que he podido encontrar es incluir un atributo "onmouseenter" en su elemento como este:
fuente
Respuesta simple : usando UI Bootstrap ( ui.bootstrap.tooltip )
Parece haber un montón de respuestas muy complejas a esta pregunta. Esto es lo que funcionó para mí.
Instalar UI Bootstrap -
$ bower install angular-bootstrap
Inyecte UI Bootstrap como una dependencia -
angular.module('myModule', ['ui.bootstrap']);
Utilice la directiva uib-tooltip en su html.
fuente
Si está creando una aplicación Angular, puede usar jQuery, pero hay muchas buenas razones para tratar de evitarlo en favor de paradigmas más angulares. Puede continuar usando los estilos proporcionados por bootstrap, pero reemplace los complementos de jQuery con angulares nativos usando UI Bootstrap
Incluya los archivos CSS de Boostrap, Angular.js y ui.Bootstrap.js:
Asegúrese de haber inyectado
ui.bootstrap
cuando cree su módulo de esta manera:Luego puede usar directivas angulares en lugar de atributos de datos recogidos por jQuery:
Demo en Plunker
Evitar Bootstrap UI
jQuery.min.js (94kb) + Bootstrap.min.js (32kb) también le brinda más de lo que necesita, y mucho más que ui-bootstrap.min.js (41kb) .
Y el tiempo dedicado a descargar los módulos es solo un aspecto del rendimiento.
Si realmente desea cargar solo los módulos que necesita, puede "Crear una compilación" y elegir información sobre herramientas del sitio web Bootstrap-UI . O puede explorar el código fuente para obtener información sobre herramientas y elegir lo que necesita.
Aquí una compilación personalizada minificada con solo la información sobre herramientas y las plantillas (6kb)
fuente
¿Ha incluido Bootstrap JS y jQuery?
Si aún no los ha cargado, es posible que la interfaz de usuario angular ( http://angular-ui.github.io/bootstrap/ ) no requiera mucha sobrecarga. Lo uso con mi aplicación Angular y tiene una directiva de información sobre herramientas. Intenta usar
tooltip="tiptext"
fuente
Escribí una directiva angular simple que nos ha funcionado bien.
Aquí hay una demostración: http://jsbin.com/tesido/edit?html,js,output
Directiva (para Bootstrap 3) :
Nota: Si está utilizando Bootstrap 4, en las líneas 6 y 11 anteriores deberá reemplazar
tooltip('destroy')
contooltip('dispose')
(Gracias al usuario1191559 por esta actualización )Simplemente agregue
bootstrap-tooltip
como atributo a cualquier elemento con extensióntitle
. Angular monitoreará los cambios entitle
pero, de lo contrario, pasará el manejo de la información sobre herramientas a Bootstrap.Esto también le permite utilizar cualquiera de las opciones nativas de información sobre herramientas de Bootstrap como
data-
atributos de la forma habitual de Bootstrap.Marcado :
Claramente, esto no tiene todos los enlaces elaborados y la integración avanzada que ofrecen AngularStrap y UI Bootstrap, pero es una buena solución si ya está usando JS de Bootstrap en su aplicación Angular y solo necesita un puente de información sobre herramientas básico en toda su aplicación sin modificar controladores o administrar eventos del mouse.
fuente
Error: cannot call methods on tooltip prior to initialization; attempted to call method 'destroy'
error.element.tooltip('destroy');
conelement.tooltip('dispose');
en ambos lugares.Puede utilizar la
selector
opción para aplicaciones dinámicas de una sola página:fuente
Puede crear una directiva simple como esta:
Luego, agregue su directiva personalizada donde sea necesario:
fuente
Puede hacer esto con AngularStrap que
Puede inyectar toda la biblioteca de esta manera:
O solo extraiga la función de información sobre herramientas como esta:
Demostración en fragmentos de pila
fuente
forma más fácil, agregue
$("[data-toggle=tooltip]").tooltip();
al controlador correspondiente.fuente
fuente
Recuerde una cosa si desea usar la información sobre herramientas de bootstrap en angularjs es el orden de sus scripts si también está usando jquery-ui, debería ser:
Está probado y probado
fuente
Lea esto solo si está asignando información sobre herramientas de forma dinámica
es decir
<div tooltip={{ obj.somePropertyThatMayChange }} ...></div>
Tuve un problema con la información sobre herramientas dinámica que no siempre se actualizaba con la vista. Por ejemplo, estaba haciendo algo como esto:
Esto no funcionó de manera consistente
Y activándolo como tal:
Sin embargo, como mi matriz de personas cambiaría, mi información sobre herramientas no siempre se actualizaría. Probé todas las correcciones en este hilo y otros sin suerte. La falla parecía estar ocurriendo solo alrededor del 5% del tiempo y era casi imposible de repetir.
Desafortunadamente, esta información sobre herramientas es fundamental para la misión de mi proyecto y mostrar una información sobre herramientas incorrecta podría ser muy mala.
Cuál parecía ser el problema
Bootstrap estaba copiando el valor de la
title
propiedad en un nuevo atributodata-original-title
y eliminando latitle
propiedad (a veces) cuando activaba las sugerencias. Sin embargo, cuando mititle={{ person.tooltip }}
cambiara, el nuevo valor no siempre se actualizaría en la propiedaddata-original-title
. Intenté desactivar la información sobre herramientas y reactivarlas, destruirlas, vincularlas directamente a esta propiedad ... todo. Sin embargo, cada uno de estos no funcionó o creó nuevos problemas; como que los atributostitle
ydata-original-title
se eliminan y se liberan de mi objeto.Que funciono
Quizás el código más feo que jamás haya introducido, pero resolvió este pequeño pero sustancial problema para mí. Ejecuto este código cada vez que la información sobre herramientas se actualiza con nuevos datos:
Lo que está sucediendo aquí en esencia es:
title
se actualicen los correos electrónicos.title
propiedad que no está vacía (es decir, ha cambiado),data-original-title
cópiela en la propiedad para que las herramientas de Bootstrap la recojan.Espero que esta larga respuesta ayude a alguien que haya estado luchando como yo.
fuente
Pruebe la información sobre herramientas (ui.bootstrap.tooltip). Consulte las directivas angulares para Bootstrap
<button type="button" class="btn btn-default" tooltip-placement="bottom" uib-tooltip="tooltip message">Test</button>
Se recomienda evitar el código JavaScript en la parte superior de AngularJS
fuente
para obtener información sobre herramientas para actualizar cuando cambia el modelo , simplemente uso en
data-original-title
lugar detitle
.p.ej
<i class="fa fa-gift" data-toggle="tooltip" data-html="true" data-original-title={{getGiftMessage(gift)}} ></i>
tenga en cuenta que estoy inicializando el uso de información sobre herramientas como esta:
versiones:
fuente
AngularStrap no funciona en IE8 con la versión 1.2.9 de angularjs, así que no use esto si su aplicación necesita ser compatible con IE8
fuente
improving @aStewartDesign respuesta:
No hay necesidad de jquery, es una respuesta tardía, pero pensé que, dado que es el más votado, debería señalar esto.
fuente
instalar las dependencias:
a continuación, agregue scripts en su angular-cli.json
luego, crea un script.js
ahora reinicie su servidor.
fuente
Debido a la función de información sobre herramientas, debe decirle a angularJS que está usando jQuery.
Esta es tu directiva:
y así es como se usa la directiva:
fuente