En utilisant Bootstrap info-bulle avec AngularJS
Je suis en train d'utiliser le Bootstrap info-bulle dans une application de la mine. Mon application est en utilisant AngularJS Actuellement, j'ai le texte suivant:
<button type="button" class="btn btn-default"
data-toggle="tooltip" data-placement="left"
title="Tooltip on left">
Tooltip on left
</button>
Je pense que j'ai besoin d'utiliser
$("[data-toggle=tooltip]").tooltip();
Cependant, je ne suis pas sûr. Même quand j'ai ajouter la ligne ci-dessus mais, mon code ne fonctionne pas. J'essaie d'éviter à l'aide de l'INTERFACE utilisateur bootstrap car il a plus que j'ai besoin. Cependant, si je devais inclure juste l'info-bulle pièce, je serais ouvert à cela. Pourtant, je ne peux pas comprendre comment le faire.
Quelqu'un peut me montrer comment obtenir le Bootstrap info-bulle de travail avec AngularJS?
- Sans l'aide d'Angular-UI Bootstrap, vous aurez besoin de faire toutes les liaisons pour vos événements. Si vous ne souhaitez pas utiliser l'INTERFACE utilisateur de Bootstrap car il a plus que vous avez besoin, avez-vous considéré que le chargement des pièces que vous avez besoin de: github.com/angular-ui/bootstrap/tree/master/src/popover
Vous devez vous connecter pour publier un commentaire.
Afin d'obtenir les info-bulles de travailler en premier lieu, vous devez les initialiser dans votre code. Ignorant AngularJS pour un deuxième, c'est comment vous obtenez les info-bulles de travailler en jQuery:
Cela permettra également de travailler dans une application AngularJS tant que c'est pas le rendu du contenu par Angulaire (par exemple: ng-repeat). Dans ce cas, vous avez besoin de rédiger une directive pour gérer cela. Voici une directive simple qui a fonctionné pour moi:
Puis tout ce que vous avez à faire est d'inclure la "bulle d'aide" l'attribut de l'élément que vous voulez l'info-bulle apparaisse sur:
Espère que ça aide!
$(element).tooltip({html: 'true', container: 'body'})
avant d'appeler info-bulle affiche comme un exemple sur la fourniture d'options personnalisées.tooltip is not a function
.element.tooltip()
peut être utilisé à la place de jQuery.La meilleure solution que j'ai été en mesure de venir avec est d'inclure une "onmouseenter" attribut sur votre élément comme ceci:
Réponse Simple - à l'aide de l'INTERFACE utilisateur Bootstrap (l'interface utilisateur.bootstrap.info-bulle)
Il semble y avoir un tas de très complexe, les réponses à cette question. Voici ce qui a fonctionné pour moi.
Installer UI Bootstrap -
$ bower install angular-bootstrap
Injecter UI Bootstrap comme une dépendance -
angular.module('myModule', ['ui.bootstrap']);
Utiliser le uib-info-bulle de la directive dans votre code html.
Si vous êtes Angulaire de la construction d'une application, vous peut utiliser jQuery, mais il y a beaucoup de bonnes raisons d'essayer de l'éviter en faveur de plus angulaire conduit paradigmes. Vous pouvez continuer à utiliser les styles fournis par bootstrap, mais de remplacer les plugins jQuery avec native angulaire en utilisant UI Bootstrap
Inclure le Bootstrap CSS fichiers, Angular.js et ui.Bootstrap.js:
Assurez-vous que vous avez injecté
ui.bootstrap
lorsque vous créez votre module comme ceci:Ensuite, vous pouvez utiliser angulaire directives au lieu d'attributs de données ramassé par jQuery:
La démo en Plunker
Éviter UI Bootstrap
jQuery.min.js (94kb) + Bootstrap.min.js (32 ko) est aussi vous donner plus que vous avez besoin, et bien plus de ui-bootstrap.min.js (41 ko).
Et le temps passé à télécharger les modules n'est qu'un aspect de la performance.
Si vous avez vraiment envie de charger uniquement les modules dont vous avez besoin, vous pouvez "Créer un Build" et choisissez les info-bulles de la Bootstrap de l'INTERFACE utilisateur du site web. Ou vous pouvez explorer la le code source pour les info-bulles et de choisir ce dont vous avez besoin.
Ici un minifiés de génération personnalisée avec juste la les info-bulles et des modèles (6kb)
Avez-vous inclus le Bootstrap JS et jQuery?
Si vous ne l'avez pas déjà chargement, puis Angulaire de l'INTERFACE utilisateur (http://angular-ui.github.io/bootstrap/) ne peut pas être beaucoup de frais généraux. - Je l'utiliser avec mon Angulaire de l'application, et il a une info-bulle de la directive. Essayez d'utiliser
tooltip="tiptext"
J'ai écrit un simple Angulaire de la Directive qui fonctionne bien pour nous.
Voici une démo: http://jsbin.com/tesido/edit?html,js,sortie
Directive (par Bootstrap 3):
Remarque: Si vous êtes en utilisant Bootstrap 4, sur les lignes 6 & 11 ci-dessus, vous aurez besoin de le remplacer
tooltip('destroy')
avectooltip('dispose')
(Grâce à user1191559 pour cette mise à jour)Simplement ajouter
bootstrap-tooltip
comme un attribut à un élément quelconque, avec untitle
. Angulaire permettra de surveiller les changements apportés à latitle
mais sinon passer l'info-bulle le traitement de plus de Bootstrap.Cela vous permet également d'utiliser les indigènes Bootstrap Info-Bulle Options comme
data-
attributs dans les conditions normales de Bootstrap façon.Balisage:
Clairement ce n'est pas toutes les élaborer des liaisons & intégration avancée que AngularStrap et UI Bootstrap offre, mais c'est une bonne solution si vous êtes déjà en utilisant Bootstrap JS dans votre Angulaire de l'app et vous avez juste besoin d'une base d'info-bulle pont à travers l'ensemble de votre application sans modifier les contrôleurs ou la gestion des événements de la souris.
Error: cannot call methods on tooltip prior to initialization; attempted to call method 'destroy'
erreur.element.tooltip('destroy');
avecelement.tooltip('dispose');
dans les deux endroits.Vous pouvez utiliser
selector
option dynamique single page applications:Vous pouvez créer une simple directive comme ceci:
Ensuite, ajoutez votre mesure où la directive est nécessaire:
Vous pouvez faire cela avec AngularStrap qui
Vous pouvez injecter la totalité de la bibliothèque comme ceci:
Ou seulement tirer dans l'info-bulle fonction comme ceci:
Démo dans la Pile des Extraits
JS:
HTML:
façon la plus simple , ajouter
$("[data-toggle=tooltip]").tooltip();
au contrôleur.JS:
HTML:
Rappelez-vous une chose, si vous voulez utiliser bootstrap info-bulle dans angularjs est l'ordre de vos scripts si vous utilisez jquery-ui ainsi, il convient de:
Il est essayé et testé
De lire ce si vous attribuez des info-bulles dynamiquement
c'est à dire
<div tooltip={{ obj.somePropertyThatMayChange }} ...></div>
J'ai eu un problème avec la dynamique des info-bulles qui n'ont pas toujours la mise à jour de la vue. Par exemple, je faisais quelque chose comme ceci:
Cela n'a pas fonctionné de façon constante
Et de l'activation de la manière suivante:
Cependant, comme mon peuple tableau voudrais changer mon info-bulles ne sont pas toujours mise à jour. J'ai essayé toutes les fixer dans ce fil et d'autres avec pas de chance. Le problème semblait être seulement qui se passe autour de 5% du temps, et il était presque impossible à répéter.
Malheureusement, ces info-bulles sont essentiels à la mission, pour mon projet, et montrant une mauvaise info-bulle pourrait être très mauvais.
Ce qui semblait être la question
Bootstrap a été la copie de la valeur de la
title
propriété à un nouvel attribut,data-original-title
et la suppression de latitle
bien (parfois) quand je veux activer le toooltips. Toutefois, lorsque montitle={{ person.tooltip }}
changerait la nouvelle valeur n'est pas toujours à jour dans la propriétédata-original-title
. J'ai essayé de désactiver les info-bulles et la réactivation d'eux, de les détruire, les contraignant à cette propriété directement... de tout. Toutefois, chacune de ces soit n'ont pas de travail ou créé de nouveaux problèmes, comme latitle
etdata-original-title
attributs à la fois enlevé et non-reliés de mon objet.Ce qui a fait un travail
Peut-être le plus laid de code que j'ai jamais poussé, mais il a résolu ce petit problème important pour moi. J'exécute ce code à chaque fois que l'info-bulle est mise à jour avec les nouvelles données:
Ce qui se passe ici, en essence:
title
s être mis à jour.title
propriété qui n'est pas vide (c'est à dire qu'il a été modifié), le copier dans ledata-original-title
de la propriété de sorte qu'il sera ramassé par Bootstrap est toolips.Espère que cette longue réponse aide à quelqu'un qui peut avoir été mal comme je l'ai été.
Essayer de l'info-bulle (de l'interface utilisateur.bootstrap.info-bulle). Voir Angulaire directives pour Bootstrap
<button type="button" class="btn btn-default"
tooltip-placement="bottom" uib-tooltip="tooltip message">Test</button>
Il est recommandé d'éviter de code JavaScript sur le haut de AngularJS
pour obtenir des info-bulles pour actualiser lorsque les changements de modèle, j'ai simplement utiliser
data-original-title
au lieu detitle
.par exemple
<i class="fa fa-gift" data-toggle="tooltip" data-html="true" data-original-title={{getGiftMessage(gift)}} ></i>
remarque que je suis de l'initialisation de l'utilisation de bulles comme ceci:
versions:
AngularStrap ne fonctionne pas avec IE8 avec angularjs version 1.2.9 afin de ne pas l'utiliser si votre application a besoin de soutien IE8
impproving @aStewartDesign réponse:
Il n'y a pas besoin de jquery, c'est un retard de réponse mais j'ai trouvé depuis c'est le top voté un, je me dois de souligner cela.
installer les dépendances:
ensuite, ajouter des scripts dans votre angulaires-cli.json
ensuite, créer un script.js
maintenant redémarrer votre serveur.