Směrnice AngularJS
AngularJS vám umožňuje rozšířit HTML o nové atributy zvané Direktivy .
AngularJS má sadu vestavěných direktiv, které nabízejí funkčnost vašim aplikacím.
AngularJS vám také umožňuje definovat vlastní direktivy.
Směrnice AngularJS
Direktivy AngularJS jsou rozšířené atributy HTML s předponou ng-
.
Direktiva ng-app
inicializuje aplikaci AngularJS.
Direktiva ng-init
inicializuje data aplikace.
Direktiva ng-model
váže hodnotu ovládacích prvků HTML (vstup, výběr, textarea) s daty aplikace.
Přečtěte si o všech direktivách AngularJS v našem odkazu na direktivy AngularJS .
Příklad
<div ng-app="" ng-init="firstName='John'">
<p>Name: <input type="text" ng-model="firstName"></p>
<p>You wrote: {{ firstName }}</p>
</div>
Direktiva ng-app
také říká AngularJS, že prvek <div> je „vlastníkem“ aplikace AngularJS.
Vazba dat
Výraz {{ firstName }}
ve výše uvedeném příkladu je výraz vazby dat AngularJS.
Datová vazba v AngularJS spojuje výrazy AngularJS s daty AngularJS.
{{ firstName }}
je svázán s ng-model="firstName"
.
V dalším příkladu jsou dvě textová pole svázána pomocí dvou direktiv ng-model:
Příklad
<div ng-app="" ng-init="quantity=1;price=5">
Quantity: <input type="number" ng-model="quantity">
Costs: <input type="number" ng-model="price">
Total in dollar: {{ quantity * price }}
</div>
Používání ng-init
není příliš běžné. Jak inicializovat data se dozvíte v kapitole o regulátorech.
Opakující se prvky HTML
Direktiva ng-repeat
opakuje element HTML:
Příklad
<div ng-app="" ng-init="names=['Jani','Hege','Kai']">
<ul>
<li ng-repeat="x in names">
{{ x }}
</li>
</ul>
</div>
Direktiva ng-repeat
ve skutečnosti klonuje prvky HTML
jednou pro každou položku v kolekci.
Direktiva ng-repeat
použitá u řady objektů:
Příklad
<div ng-app="" ng-init="names=[
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]">
<ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
AngularJS je ideální pro databázové aplikace CRUD (Create Read Update Delete).
Jen si představte, že by tyto objekty byly záznamy z databáze.
Směrnice v aplikaci
Direktiva ng-app
definuje kořenový prvek aplikace AngularJS.
Direktiva automatickyng-app
spustí (automaticky inicializuje) aplikaci při načtení webové stránky.
Směrnice o teple
Direktiva ng-init
definuje počáteční hodnoty pro aplikaci AngularJS.
Normálně nebudete používat ng-init. Místo toho použijete ovladač nebo modul.
Více o ovladačích a modulech se dozvíte později.
Směrnice o modelování
Direktiva ng-model
váže hodnotu ovládacích prvků HTML (vstup, výběr, textarea) s daty aplikace.
Směrnice ng-model
může také:
- Poskytněte ověření typu pro data aplikace (číslo, e-mail, povinné).
- Uveďte stav dat aplikace (neplatná, špinavá, dotyková, chyba).
- Poskytněte třídy CSS pro prvky HTML.
- Svázat prvky HTML s formuláři HTML.
Přečtěte si více o ng-model
směrnici v další kapitole.
Vytvořte nové směrnice
Kromě všech vestavěných direktiv AngularJS můžete vytvářet vlastní direktivy.
Pomocí funkce se vytvářejí nové direktivy .directive
.
Chcete-li vyvolat novou direktivu, vytvořte prvek HTML se stejným názvem značky, jako má nová direktiva.
Při pojmenování direktivy musíte použít název případu velblouda
w3TestDirective
, ale při jeho vyvolání musíte použít -
samostatný název, w3-test-directive
:
Příklad
<body ng-app="myApp">
<w3-test-directive></w3-test-directive>
<script>
var app = angular.module("myApp", []);
app.directive("w3TestDirective",
function() {
return {
template : "<h1>Made by a directive!</h1>"
};
});
</script>
</body>
Direktivu můžete vyvolat pomocí:
- Název prvku
- Atribut
- Třída
- Komentář
Všechny příklady níže poskytnou stejný výsledek:
Název prvku
<w3-test-directive></w3-test-directive>
Atribut
<div w3-test-directive></div>
Třída
<div class="w3-test-directive"></div>
Komentář
<!-- directive: w3-test-directive -->
Omezení
Své direktivy můžete omezit tak, aby byly vyvolány pouze některými metodami.
Příklad
Přidáním restrict
vlastnosti s hodnotou "A"
lze direktivu vyvolat pouze pomocí atributů:
var app = angular.module("myApp", []);
app.directive("w3TestDirective",
function() {
return {
restrict : "A",
template : "<h1>Made by a directive!</h1>"
};
});
Právní omezení hodnot jsou:
E
pro název prvkuA
pro atributC
pro tříduM
pro komentář
Ve výchozím nastavení je hodnota EA
, což znamená, že jak názvy prvků, tak názvy atributů mohou vyvolat direktivu.