Estou tentando usar a dica de ferramenta Bootstrap em um aplicativo meu. Meu aplicativo está usando AngularJS. Atualmente, tenho o seguinte:
<button type="button" class="btn btn-default"
data-toggle="tooltip" data-placement="left"
title="Tooltip on left">
Tooltip on left
</button>
Eu acho que preciso usar
$("[data-toggle=tooltip]").tooltip();
No entanto, não tenho certeza. Mesmo quando adiciono a linha acima, meu código não funciona. Estou tentando evitar o uso de bootstrap da interface do usuário, pois tem mais do que preciso. No entanto, se eu tivesse que incluir apenas a peça de dica de ferramenta, estaria aberto a isso. No entanto, não consigo descobrir como fazer isso.
Alguém pode me mostrar como fazer o Bootstrap Tooltip funcionar com o AngularJS?
angularjs
twitter-bootstrap
twitter-bootstrap-tooltip
user2871401
fonte
fonte
Respostas:
Para que as dicas de ferramentas funcionem em primeiro lugar, você deve inicializá-las em seu código. Ignorando AngularJS por um segundo, é assim que você faria as dicas de ferramentas funcionarem no jQuery:
Isso também funcionará em um aplicativo AngularJS, desde que o conteúdo não seja renderizado pelo Angular (por exemplo: ng-repeat). Nesse caso, você precisa escrever uma diretiva para lidar com isso. Aqui está uma diretiva simples que funcionou para mim:
Então, tudo que você precisa fazer é incluir o atributo "tooltip" no elemento em que deseja que a tooltip apareça:
Espero que ajude!
fonte
$(element).tooltip({html: 'true', container: 'body'})
antes de chamar o show de dica de ferramenta como um exemplo de fornecimento de opções personalizadas.element.tooltip()
pode ser usado em vez de jQuery.A melhor solução que consegui encontrar é incluir um atributo "onmouseenter" em seu elemento como este:
fonte
Resposta simples - usando UI Bootstrap ( ui.bootstrap.tooltip )
Parece haver um monte de respostas muito complexas para essa pergunta. Aqui está o que funcionou para mim.
Instalar UI Bootstrap -
$ bower install angular-bootstrap
Injetar UI Bootstrap como uma dependência -
angular.module('myModule', ['ui.bootstrap']);
Use a diretiva uib-tooltip em seu html.
fonte
Se você está construindo um aplicativo Angular, pode usar jQuery, mas há muitos bons motivos para tentar evitá-lo em favor de paradigmas mais angulares. Você pode continuar a usar os estilos fornecidos pelo bootstrap, mas substitua os plug-ins jQuery pelo angular nativo usando o UI Bootstrap
Inclua os arquivos Boostrap CSS, Angular.js e ui.Bootstrap.js:
Certifique-se de que você injetou
ui.bootstrap
ao criar seu módulo assim:Então você pode usar diretivas angulares em vez de atributos de dados obtidos por jQuery:
Demonstração no Plunker
Evitando bootstrap de IU
jQuery.min.js (94kb) + Bootstrap.min.js (32kb) também está dando a você mais do que você precisa, e muito mais do que ui-bootstrap.min.js (41kb) .
E o tempo gasto no download dos módulos é apenas um aspecto do desempenho.
Se você realmente deseja carregar apenas os módulos necessários, pode "Criar um Build" e escolher dicas de ferramentas no site Bootstrap-UI . Ou você pode explorar o código-fonte para dicas de ferramentas e escolher o que você precisa.
Aqui, uma construção personalizada reduzida com apenas dicas de ferramentas e modelos (6kb)
fonte
Você incluiu o Bootstrap JS e jQuery?
Se você ainda não os carregou, a interface do usuário Angular ( http://angular-ui.github.io/bootstrap/ ) pode não ser muito sobrecarga. Eu uso isso com meu aplicativo Angular e tem uma diretiva de dica de ferramenta. Tente usar
tooltip="tiptext"
fonte
Eu escrevi uma Diretriz Angular simples que está funcionando bem para nós.
Aqui está uma demonstração: http://jsbin.com/tesido/edit?html,js,output
Diretiva (para Bootstrap 3) :
Nota: Se você estiver usando o Bootstrap 4, nas linhas 6 e 11 acima, você precisará substituir
tooltip('destroy')
portooltip('dispose')
(Obrigado ao usuário 1191559 por esta atualização )Basta adicionar
bootstrap-tooltip
um atributo a qualquer elemento com umtitle
. O Angular monitorará as mudanças no,title
mas, caso contrário, passará a manipulação da dica de ferramenta para o Bootstrap.Isso também permite que você use qualquer uma das opções nativas de dicas de ferramenta do Bootstrap como
data-
atributos da maneira normal do Bootstrap.Markup :
Claramente, isso não tem todas as ligações elaboradas e integração avançada que AngularStrap e UI Bootstrap oferecem, mas é uma boa solução se você já estiver usando JS do Bootstrap em seu aplicativo Angular e precisar apenas de uma ponte de dica de ferramenta básica em todo o seu aplicativo, sem modificando controladores ou gerenciando eventos de mouse.
fonte
Error: cannot call methods on tooltip prior to initialization; attempted to call method 'destroy'
erro.element.tooltip('destroy');
comelement.tooltip('dispose');
em ambos os lugares.Você pode usar a
selector
opção para aplicativos dinâmicos de página única:fonte
Você pode criar uma diretiva simples como esta:
Em seguida, adicione sua diretiva personalizada onde for necessário:
fonte
Você pode fazer isso com AngularStrap, que
Você pode injetar a biblioteca inteira assim:
Ou apenas puxe o recurso de dica como este:
Demo em Stack Snippets
fonte
maneira mais fácil, adicione
$("[data-toggle=tooltip]").tooltip();
ao controlador em questão.fonte
fonte
Lembre-se de uma coisa se você quiser usar a dica de ferramenta de bootstrap no angularjs: a ordem dos seus scripts, se você também estiver usando jquery-ui, deve ser:
É experimentado e testado
fonte
Leia isto apenas se estiver atribuindo dicas de ferramentas dinamicamente
ie
<div tooltip={{ obj.somePropertyThatMayChange }} ...></div>
Tive um problema com dicas de ferramentas dinâmicas que nem sempre eram atualizadas com a visualização. Por exemplo, eu estava fazendo algo assim:
Isso não funcionou de forma consistente
E ativando-o assim:
No entanto, como minha matriz de pessoas mudaria, minhas dicas de ferramentas nem sempre eram atualizadas. Tentei todas as soluções neste tópico e em outros sem sorte. A falha parecia estar acontecendo apenas cerca de 5% das vezes e era quase impossível de repetir.
Infelizmente, essas dicas de ferramentas são essenciais para o meu projeto e mostrar uma dica de ferramenta incorreta pode ser muito ruim.
O que parecia ser o problema
O bootstrap estava copiando o valor da
title
propriedade para um novo atributodata-original-title
e removendo atitle
propriedade (às vezes) quando eu ativava as pontas de demais. No entanto, quando meutitle={{ person.tooltip }}
fosse alterado, o novo valor nem sempre seria atualizado na propriedadedata-original-title
. Tentei desativar as dicas e reativá-las, destruindo-as, vinculando a essa propriedade diretamente ... tudo. No entanto, cada um deles não funcionou ou criou novos problemas; como os atributostitle
edata-original-title
sendo removidos e não vinculados do meu objeto.O que funcionou
Talvez o código mais feio que já empurrei, mas resolveu esse problema pequeno, mas substancial para mim. Eu executo este código sempre que a dica de ferramenta é atualizada com novos dados:
O que está acontecendo aqui em essência é:
title
s sejam atualizados.title
propriedade que não está vazia (ou seja, foi alterada), copie-a para adata-original-title
propriedade para que seja selecionada pelas dicas de ferramentas do Bootstrap.Espero que esta longa resposta ajude alguém que pode estar passando por dificuldades como eu.
fonte
Experimente a dica de ferramenta (ui.bootstrap.tooltip). Consulte as diretivas angulares para Bootstrap
<button type="button" class="btn btn-default" tooltip-placement="bottom" uib-tooltip="tooltip message">Test</button>
Recomenda-se evitar o código JavaScript na parte superior do AngularJS
fonte
para obter dicas para atualizar quando o modelo muda , eu simplesmente uso em
data-original-title
vez detitle
.por exemplo
<i class="fa fa-gift" data-toggle="tooltip" data-html="true" data-original-title={{getGiftMessage(gift)}} ></i>
observe que estou inicializando o uso de dicas de ferramentas como esta:
versões:
fonte
AngularStrap não funciona no IE8 com angularjs versão 1.2.9, portanto, não use isso se seu aplicativo precisar ser compatível com o IE8
fonte
melhorando a resposta de @aStewartDesign:
Não há necessidade de jquery, é uma resposta tardia, mas percebi que, uma vez que é a mais votada, devo salientar isso.
fonte
instale as dependências:
em seguida, adicione scripts em seu angular-cli.json
então, crie um script.js
agora reinicie seu servidor.
fonte
Por causa da função de dica de ferramenta, você deve informar ao angularJS que está usando jQuery.
Esta é a sua diretriz:
e é assim que se usa a diretiva:
fonte