AngularJS 3: Data Binding a Directives

V minulém díle jsme si ukázali, jak napsat výraz a nakousli jsme Directives. Dnes si povíme něco o Data Bindingu a hlouběji se podíváme na již načatéDirectives.

Data Binding

Jedna z hlavních výhod AngularJS spočívá v Data Bindingu. Podívejme se na příklad:

<!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="">
    <label>Jméno:</label>
    <input type="text" ng-model="jmeno" placeholder="Vaše jméno">
    <h2>{{jmeno}}? Rádi tě tu opět vidíme!</h2>
</div>
</body>
</html>

Tento kód vytvoří textbox. Ve chvíli, kdy do něj začnete psát, informace se automaticky zobrazí v nadpisu <h2></h2>.

Ng-model

Ng-model je directive, která spojuje HTML element s určitou vlastností (property). V kódu výše jsme propojili výstup (input) vlastnosti nazvané jmeno s vlastností výrazu {{jmeno}}.

Díky data bindingu můžeme automaticky synchronizovat data mezi modelem (model) a view:

view- jedná se v podstatě o DOM, který vidí uživatel

model - jsou data, která uživatel vidí ve view a s kterými interaguje (napíše své vlastní jméno)

Data bindingem propojujeme model a view.

Data binding vždy zobrazí model ( = informace) ve view. Když se změní model, view opíše změnu a obráceně.

Directives

Directives se podobají HTML atributům. Právě díky nim můžeme specifikovat chování určitých DOM elementů.

Ng-app

Tato directive určí, že se jedná o aplikaci AngularJS. Nebýt ng-app, kód {{ 2 + 2 }} by se v prohlížeči nezobrazil jako 4, nýbrž jako {{ 2 + 2 }}.

Ng-model

Tato directive propojí HTML element s nějakou vlastností - využívá se pro Data binding.

Ng-init

Tato directive zadá počáteční hodnotu ( v klasickém HTML se používá jako počáteční hodnota podobný atribut value - <input type="text" name="jmeno" value="Jan Novák" >

Zkusme si to předvést na příkladu. Chceme převést teplotu ze °C na Fahrenheity. Na to lze použít vzorec: F = 1,8 °C + 32

<!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="" ng-init="celsius=0; rozdil=32">
    <p>Celsius:<input type=""number ng-model="celsius"</p>
    <p>Fahrenheit:{{celsius*1.8 + rozdil}}</p>
</div>
</body>
</html>

Pomocí ng-init jsme deklarovali dvě vlastnosti, ng-model nám pomohl k propojení input-boxu a vlastnosti celsius k výpočtu Fahrenheitů.

Ng-repeat

Další velmi užitečná directive je ng-repeat. Opakuje HTML template (= vzor) pro každou položku ve specifikovaném seznamu.

Uveďme si příklad:

<!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="" ng-init="studenti=['Petr', 'Jan', 'Pavel', 'Tomáš']">
    <ol>
        <li ng-repeat="jmeno in studenti">
            {{jmeno}}
        </li>
    </ol>
</div>
</body>
</html>

Nezapomeňte na slovíčko in, které spojuje název položky a název seznamu.

Skvěle! Právě jste pochopili základní principy AngularJS. Jen tak dál!