Utilizo Bootstrap y AngularJS en mi aplicación web. Tengo algunas dificultades para que los dos funcionen juntos.
Tengo un elemento, que tiene el 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()" />
Y quiero actualizar el data-source
atributo cuando el usuario ingresa en el campo. La función updateTypeahead
se activa correctamente, pero no tengo acceso al elemento que activó el evento, a menos que utilice $('#searchText')
, que es la forma jQuery, no la forma AngularJS.
¿Cuál es la mejor manera de hacer que AngularJS funcione con el módulo JS de estilo antiguo?
fuente
<li ng-repeat="item in items" role="menuitem" ng-class="{\'selected\' : isSelected($event, item)}">
La forma angular general de obtener acceso a un elemento que desencadenó un evento es escribir una directiva y bind () al evento deseado:
o con DDO (según el comentario de @ tpartee a continuación):
La directiva anterior se puede utilizar de la siguiente manera:
Plunker .
Escribe en el campo de texto, luego deja / difumina. Se activará la función de devolución de llamada de cambio. Dentro de esa función de devolución de llamada, tiene acceso a
element
.Algunas directivas integradas admiten pasar un objeto $ event. Por ejemplo, ng- * clic, ng-Mouse *. Tenga en cuenta que ng-change no admite este evento.
Aunque puede obtener el elemento a través del objeto $ event:
esto va "profundamente en contra de la forma Angular" - Misko .
fuente
puede obtener fácilmente como este primer evento de escritura en el elemento
y en su archivo js como a continuación
Yo también lo he usado.
fuente
Hay una solución que usa $ element en el controlador si no desea crear otra directiva para este problema:
Y esto funcionará con ng-change :
fuente
si desea un valor de modelo ng, si puede escribir así en el evento desencadenado: $ scope.searchText
fuente
No estoy seguro de qué versión tenías, pero esta pregunta se hizo hace mucho tiempo. Actualmente con Angular 1.5, puedo usar el
ng-keypress
evento y ladebounce
función de Lodash para emular un comportamiento similarng-change
, así puedo capturar el evento $fuente
Para pasar el elemento fuente en Angular 5:
fuente