AngularJS 5: Events

V minulém díle jsme začali používat controllery a $scope. Dneska si ukážeme, jak takový controller obohatit o pořádnou funkčnost založenou na podnětech "zvenčí", jako je kliknutí na tlačítko či stisknutí klávesy.

AngularJS obsahuje určité directives, které můžeme použít k vytvoření speciální funkčnosti na DOM events jako je např. click či dblclick (dvojklik).

Event directives

Mezi podporované directives patří:

  • ng-blur - zaregistruje, když se kurzor dostane mimo input text-boxu
  • ng-click - klik
  • ng-dblclick - dvojklik
  • ng-focus - zaregistruje, když se kurzor dostane do input text-boxu
  • ng-keydown - stisknutí tlačítka
  • ng-keypressed - držení tlačítka
  • ng-keyup - puštění stisknutého tlačítka
  • ng-mouseenter - vždy když myš se myš nachází nad určitým elementem a přemění se na kurzor
  • ng-mouseleave - vždy když opustí div
  • ng-mousemove -registruje pohyb při přejetí (hover), přičemž vždy, když se myš pohne, vysílá signál
  • ng-mouseover - vždy, když myš přejde po DIVu
  • ng-mouseup - vždy, když stiskneme jakékoliv tlačítko na myši

U všech directives platí, že registrují určitý signál nad DIVem, v kterém je daná event directive uvedena.

Vytvořme si aplikaci, která bude počítat počet kliků pomocí ng-click:

<!DOCTYPE HTML>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
</head>
<body>
<div ng-app="mojeApk" ng-controller="pocetKliknuti">
    <input type="button" value="Klikni na mě!"
 ng-click="pocet = pocet + 1">
    <p>{{pocet}}</p>
</div>
    <script>
        var ngApk = angular.module('mojeApk',[]);
        ngApk.controller('pocetKliknuti', function ($scope) {
            $scope.pocet = 0;
        })
    </script>
</body>
</html>

Controller pocetKliknuti inicializuje vlastnost (property) pocet. Pomocí directive ng-click započneme click event tlačítka a zvýšíme hodnotu vlastnosti pocet.