Eu uso Bootstrap e AngularJS em meu aplicativo da web. Estou tendo alguma dificuldade em fazer os dois funcionarem juntos.
Eu tenho um elemento, que tem o atributo data-provide="typeahead"
<input id="searchText" ng-model="searchText" type="text"
class="input-medium search-query" placeholder="title"
data-provide="typeahead" ng-change="updateTypeahead()" />
E quero atualizar o data-source
atributo quando o usuário inserir no campo. A função updateTypeahead
é disparada corretamente, mas não tenho acesso ao elemento que disparou o evento, a menos que eu use $('#searchText')
, que é o jeito jQuery, não o jeito AngularJS.
Qual é a melhor maneira de fazer o AngularJS funcionar com o módulo JS de estilo antigo.
fonte
<li ng-repeat="item in items" role="menuitem" ng-class="{\'selected\' : isSelected($event, item)}">
A maneira Angular geral de obter acesso a um elemento que acionou um evento é escrever uma diretiva e ligar () ao evento desejado:
ou com DDO (conforme o comentário de @tpartee abaixo):
A diretiva acima pode ser usada da seguinte forma:
Plunker .
Digite no campo de texto e, em seguida, saia / desfoque. A função de retorno de chamada de alteração será acionada. Dentro dessa função de retorno de chamada, você tem acesso
element
.Algumas diretivas integradas suportam a passagem de um objeto $ event. Por exemplo, ng- * clique, ng-Mouse *. Observe que ng-change não suporta este evento.
Embora você possa obter o elemento por meio do objeto $ event:
isso vai "profundamente contra o caminho Angular" - Misko .
fonte
você pode ficar assim facilmente primeiro evento de gravação no elemento
e em seu arquivo js como abaixo
Eu também usei.
fonte
Existe uma solução usando $ element no controlador se você não quiser criar outra diretiva para este problema:
E isso funcionará com ng-change :
fonte
se você quiser o valor do modelo ng, pode escrever assim no evento disparado: $ scope.searchText
fonte
Não tenho certeza de qual versão você tinha, mas essa pergunta foi feita há muito tempo. Atualmente com o Angular 1.5, posso usar o
ng-keypress
evento e adebounce
função do Lodash para emular um comportamento semelhante comong-change
, para que eu possa capturar o $ eventfonte
Para passar o elemento de origem no Angular 5:
fonte