Como posso detectar o onKeyUp no AngularJS?

Como posso detectar o onKeyUp no AngularJS?

Estou procurando uma diretiva ‘ngOnkeyup’, semelhante ao ngChange, mas não consigo encontrar nada adequado.

Se não houver tal diretiva, existe uma maneira limpa de chamar o controlador de um evento onkeyup nativo do navegador?

EDIT: veja segunda resposta abaixo do maklemenz que se refere à nova diretiva ng-keyup embutida

Você poderia usar a biblioteca angular-ui :

Com angular-ui, você pode apenas fazer

 

Se você não quiser usar outra biblioteca, a maneira mais eficiente e simples de fazer isso é:

JS

 myApp.directive('onKeyup', function() { return function(scope, elm, attrs) { elm.bind("keyup", function() { scope.$apply(attrs.onKeyup); }); }; }); 

HTML:

  

Edit : Se você queria detectar qual tecla foi pressionada, você tem duas opções básicas realmente. Você poderia adicionar um atributo à diretiva para manipular as chaves permitidas dentro da diretiva, ou você poderia passar a chave pressionada ao seu controlador. Eu geralmente recomendaria a diretiva manipula o método-chave.

Aqui está um exemplo das duas formas: http://jsfiddle.net/bYUa3/2

Para todos que procuram esse recurso hoje, por favor, use a diretiva ng-keyup oficial:

  

Você terá que criar sua diretiva personalizada se diretivas padrão não forem suficientes. Algo como isso, pode ser?

         

Além do já mencionado Event Binder, agora você pode usar essas convenientes diretivas ui-key * do Angular UI:

     

http://angular-ui.github.io/#/directives-keypress

Apenas para ajudar alguém que, como eu, queria triggersr o evento apenas em uma determinada tecla. Aqui está o código usando ng-keyup que chama minha function cancel() quando, e somente quando, escape é pressionado. Para descobrir qual código você quer ver neste site

 ng-keyup="$event.keyCode == 27 ? cancel() : ''" 

Note que como @maklemenz mencionou isso usa a diretiva Angular embutida disponível agora

FYI – Eu estava procurando por isso hoje e parece que há uma ramificação no github do Angular que aborda a questão do keydown de keyup.

https://github.com/angular/angular.js/pull/1622

Foi fundido em mestre … No entanto, não parece que vai aparecer em um lançamento até 1.1.3

Para construir o angular com a opção ng-keyup, você pode baixar o código do git e executar o rake package na pasta. É claro que no Windows isso significa instalar Node.js e Ruby e possivelmente alguns outros aros (eu estava tendo erros de garfo no win32)

No entanto, recebi a chave “embutida” no final.

Se eu entendi sua pergunta corretamente, você está procurando pela diretiva ng-keyup. Aqui está um link: http://docs.angularjs.org/api/ng.directive:ngKeyup

Eu sei que minha resposta é tarde demais, mas espero que possa ser útil para algumas pessoas. Se você está procurando um método rápido e fácil, você pode usar isto:

  // in the controller // get element by id, you can use by class... var element = angular.element('#element'); element.keyup(function () { console.log('keyup fired'); })