Jak vytvořit vlastní směrnici v AngularJS s příkladem

Obsah:

Anonim

Co je to vlastní směrnice?

Vlastní směrnice v Angular Js je uživatelem definovaná směrnice s požadovanou funkcí. I když má AngularJS již po vybalení spoustu výkonných směrnic, někdy jsou vyžadovány vlastní směrnice.

V tomto výukovém programu se naučíte

  • Jak vytvořit vlastní směrnici?
  • Směrnice a obory AngularJs
  • Používání řadičů se směrnicemi
  • Jak vytvořit opakovaně použitelné směrnice
  • Směrnice a komponenty AngularJS - ng-transclude
  • Vnořené směrnice
  • Zpracování událostí ve směrnici

Jak vytvořit vlastní směrnici?

Pojďme se podívat na příklad, jak můžeme vytvořit vlastní direktivu.

Vlastní směrnice v našem případě jednoduše vloží značku div, která má na naší stránce při volání směrnice text „AngularJS Tutorial“.

Event Registration

Guru99 Global Event

Vysvětlení kódu:

  1. Nejprve vytváříme modul pro naši úhlovou aplikaci. To je nutné k vytvoření vlastní směrnice, protože směrnice bude vytvořena pomocí tohoto modulu.
  2. Nyní vytváříme vlastní směrnici nazvanou „ngGuru“ a definujeme funkci, která bude mít vlastní kód pro naši směrnici.

Poznámka:-

Všimněte si, že při definování směrnice jsme ji definovali jako ngGuru s písmenem „G“ jako velkým písmem. A když k němu přistupujeme z naší značky div jako směrnice, přistupujeme k ní jako ng-guru. Takto Angular rozumí vlastním direktivám definovaným v aplikaci. Název vlastní směrnice by měl nejprve začínat písmeny „ng“. Zadruhé by měl být pomlčka „-“ zmíněna pouze při volání směrnice. A za třetí, první písmeno, které následuje po definici směrnice za písmeny „ng“, může být malé nebo velké.

  1. Používáme parametr šablony, což je parametr definovaný Angular pro vlastní směrnice. V tomto definujeme, že kdykoli se použije tato směrnice, stačí použít hodnotu šablony a vložit ji do volajícího kódu.
  2. Zde nyní využíváme naši vlastní vytvořenou směrnici „ng-guru“. Když to uděláme, nyní zde bude vložena hodnota, kterou jsme definovali pro naši šablonu „
    Angular JS Tutorial
    “.

Pokud je kód úspěšně proveden, při spuštění kódu v prohlížeči se zobrazí následující výstup.

Výstup:

  • Výše uvedený výstup jasně ukazuje, že se v prohlížeči zobrazí naše vlastní směrnice ng-guru, která má definovanou šablonu pro zobrazování vlastního textu.

Směrnice a obory AngularJs

Rozsah je definován jako lepidlo, které váže řadič na pohled správou dat mezi pohledem a řadičem.

Při vytváření vlastních direktiv AngularJs budou mít ve výchozím nastavení přístup k objektu oboru v nadřazeném řadiči.

Tímto způsobem bude pro vlastní direktivu snadné využívat data předávaná hlavnímu řadiči.

Podívejme se na příklad toho, jak můžeme použít rozsah nadřazeného řadiče v naší vlastní směrnici.

Event Registration

Guru99 Global Event

Vysvětlení kódu:

  1. Nejprve vytvoříme ovladač s názvem „DemoController“. V tomto definujeme proměnnou nazvanou tutorialName a připojíme ji k objektu oboru v jednom příkazu - $ scope.tutorialName = "AngularJS".
  2. V naší vlastní směrnici můžeme zavolat proměnnou „tutorialName“ pomocí výrazu. Tato proměnná by byla přístupná, protože je definována v řadiči „DemoController“, který by se stal nadřazeným prvkem této směrnice.
  3. Na ovladač odkazujeme ve značce div, která bude fungovat jako naše nadřazená značka div. Všimněte si, že to je třeba udělat jako první, aby naše vlastní direktiva získala přístup k proměnné tutorialName.
  4. Nakonec k naší značce div připojíme naši vlastní směrnici „ng-guru“.

Pokud je kód úspěšně proveden, při spuštění kódu v prohlížeči se zobrazí následující výstup.

Výstup:

  • Výše uvedený výstup jasně ukazuje, že naše vlastní směrnice „ng-guru“ využívá v nadřazeném řadiči proměnnou oboru tutorialName.

Používání řadičů se směrnicemi

Úhlové poskytuje zařízení pro přístup k členské proměnné řadiče přímo z vlastních směrnic bez nutnosti objektu oboru.

To je občas nutné, protože v aplikaci můžete mít více objektů oboru patřících do více řadičů.

Existuje tedy velká šance, že byste mohli udělat chybu v přístupu k objektu oboru nesprávného řadiče.

V takových scénářích existuje způsob, jak konkrétně zmínit, že ze své směrnice řeknu „Chci získat přístup k tomuto konkrétnímu řadiči“.

Pojďme se podívat na příklad toho, jak toho můžeme dosáhnout.

Event Registration

Guru99 Global Event

Vysvětlení kódu:

  1. Nejprve vytvoříme ovladač s názvem „DemoController“. V tomto definujeme proměnnou nazvanou "tutorialName" a tentokrát ji místo připojení k objektu oboru připojíme přímo k řadiči.
  2. V naší vlastní směrnici konkrétně zmiňujeme, že chceme použít řadič „DemoController“ pomocí klíčového slova parametru řadiče.
  3. Pomocí parametru "controllerAs" vytvoříme odkaz na řadič. To je definováno Angular a je to způsob, jak odkazovat na ovladač jako referenci.

    Poznámka: - Ve směrnici je možné přistupovat k více řadičům zadáním příslušných bloků příkazů controller, controllerAs a template.

  4. Nakonec v naší šabloně používáme odkaz vytvořený v kroku 3 a používáme členskou proměnnou, která byla připojena přímo k řadiči v kroku 1.

Pokud je kód úspěšně proveden, při spuštění kódu v prohlížeči se zobrazí následující výstup.

Výstup:

Výstup jasně ukazuje, že vlastní direktiva zejména přistupuje k DemoController a členské proměnné tutorialName k ní připojené a zobrazuje text "Angular".

Jak vytvořit opakovaně použitelné směrnice

Už jsme viděli sílu vlastních směrnic, ale můžeme ji posunout na další úroveň vytvořením vlastních opakovaně použitelných směrnic.

Řekněme například, že jsme chtěli vložit kód, který by vždy zobrazoval níže uvedené značky HTML na více obrazovkách, což je v podstatě jen vstup pro „Jméno“ a „věk“ uživatele.

Abychom tuto funkci mohli opakovaně použít na více obrazovkách bez nutnosti zakódování, vytvoříme hlavní ovládací prvek nebo direktivu v úhlu, která tyto ovládací prvky drží („Jméno“ a „věk“ uživatele).

Takže nyní, místo toho, abychom pokaždé zadávali stejný kód pro obrazovku níže, můžeme tento kód skutečně vložit do směrnice a vložit tuto směrnici kdykoli.

Podívejme se na příklad toho, jak toho můžeme dosáhnout.

Event Registration

Guru99 Global Event

Vysvětlení kódu:

  1. V našem fragmentu kódu pro vlastní direktivu se změní jen hodnota, která je dána parametru šablony naší vlastní direktivy.

    Místo značky nebo textu plánu pět vlastně zadáváme celý fragment 2 vstupních ovládacích prvků pro „Název“ a „věk“, které je třeba zobrazit na naší stránce.

Pokud je kód úspěšně proveden, při spuštění kódu v prohlížeči se zobrazí následující výstup.

Výstup:

Z výše uvedeného výstupu vidíme, že se na stránku přidá fragment kódu ze šablony vlastní směrnice.

Směrnice a komponenty AngularJS - ng-transclude

Jak jsme již zmínili dříve, Angular má rozšířit funkčnost HTML. A už jsme viděli, jak můžeme mít vkládání kódu pomocí vlastních opakovaně použitelných směrnic.

Ale v moderním vývoji webových aplikací existuje také koncept vývoje webových komponent. Což v podstatě znamená vytvoření vlastních značek HTML, které lze v našem kódu použít jako komponenty.

Angular proto poskytuje další úroveň výkonu při rozšiřování značek HTML tím, že umožňuje vkládat atributy do samotných značek HTML.

To se děje pomocí značky „ ng-transclude “, což je druh nastavení, které umožňuje úhlovému zachycení všeho, co je vloženo do směrnice ve značce.

Vezměme si příklad toho, jak toho můžeme dosáhnout.

Event Registration

Guru99 Global Event

Angular JS

Vysvětlení kódu:

  1. Používáme direktivu k definování vlastní značky HTML s názvem 'pane' a přidání funkce, která vloží nějaký vlastní kód pro tuto značku. Na výstupu bude naše značka vlastního podokna zobrazovat text "AngularJS" v obdélníku s plným černým okrajem.
  2. Atribut „transclude“ musí být zmíněn jako true, což vyžaduje angular pro vložení této značky do našeho DOM.
  3. V oboru definujeme atribut titulu. Atributy jsou obvykle definovány jako páry název / hodnota, například: name = "value". V našem případě je název atributu v naší značce HTML značky „title“. Symbol „@“ je požadavek z úhlu. To se děje tak, že když je v kroku 5 spuštěn řádek title = {{title}}, bude do značky HTML panelu přidán vlastní kód pro atribut title.
  4. Vlastní kód pro atributy titulu, který právě vykresluje plné černé ohraničení pro naši kontrolu.
  5. Nakonec voláme naši vlastní značku HTML spolu s atributem title, který byl definován.

Pokud je kód úspěšně proveden, při spuštění kódu v prohlížeči se zobrazí následující výstup.

Výstup:

  • Výstup jasně ukazuje, že atribut title značky html5 v podokně byl nastaven na vlastní hodnotu „Angular.JS“.

Vnořené směrnice

Směrnice v úhlu mohou být vnořeny. Stejně jako jen vnitřní moduly nebo funkce v libovolném programovacím jazyce budete možná muset vložit směrnice do sebe navzájem.

Můžete to lépe pochopit zobrazením níže uvedeného příkladu.

V tomto příkladu vytváříme 2 směrnice zvané „vnější“ a „vnitřní“.

  • Vnitřní směrnice zobrazí text s názvem „Vnitřní“.
  • Zatímco vnější směrnice ve skutečnosti volá vnitřní směrnici, aby se zobrazil text s názvem „Vnitřní“.


Guru99 Global Event

Vysvětlení kódu:

  1. Vytváříme směrnici nazvanou „vnější“, která se bude chovat jako naše nadřazená směrnice. Tato směrnice poté zavolá „vnitřní“ směrnici.
  2. Omezení: ‚E 'je požadováno úhlovým, aby bylo zajištěno, že data z vnitřní směrnice jsou k dispozici vnější směrnici. Písmeno „E“ je krátká forma slova „Element“.
  3. Zde vytváříme vnitřní směrnici, která zobrazuje text „Vnitřní“ ve značce div.
  4. V šabloně pro vnější směrnici (krok č. 4) voláme vnitřní směrnici. Tady tedy vkládáme šablonu z vnitřní směrnice do vnější směrnice.
  5. Nakonec přímo voláme vnější směrnici.

Pokud je kód úspěšně proveden, při spuštění kódu v prohlížeči se zobrazí následující výstup.

Výstup:

Z výstupu

  • Je vidět, že byla volána vnější i vnitřní směrnice a zobrazí se text v obou značkách div.

Zpracování událostí ve směrnici

Události, jako je kliknutí myší nebo kliknutí na tlačítko, lze zpracovat přímo v rámci směrnic. To se provádí pomocí funkce odkazu. Funkce odkazu umožňuje direktivě připojit se k prvkům DOM na stránce HTML.

Syntax:

Syntaxe prvku odkazu je uvedena níže

ng-opakovat

link: function ($scope, element, attrs)

Funkce odkazu normálně přijímá 3 parametry včetně oboru, prvku, ke kterému je směrnice přidružena, a atributů cílového prvku.

Podívejme se na příklad toho, jak toho můžeme dosáhnout.

Event Registration

Guru99 Global Event

Click Me

Vysvětlení kódu:

  1. Používáme funkci odkazu, jak je definována v úhlu, abychom dali směrnicím přístup k událostem v HTML DOM.
  2. Používáme klíčové slovo „element“, protože chceme reagovat na událost pro prvek HTML DOM, což je v našem případě prvek „div“. Potom používáme funkci „bind“ a říkáme, že chceme přidat vlastní funkci události click prvku. Slovo „kliknutí“ je klíčové slovo, které se používá k označení události kliknutí jakéhokoli ovládacího prvku HTML. Například ovládací prvek tlačítka HTML má událost kliknutí. Protože v našem příkladu chceme přidat vlastní kód do události kliknutí naší značky „dev“, používáme klíčové slovo „click“.
  3. Zde říkáme, že chceme nahradit vnitřní HTML prvku (v našem případě prvku div) textem „Klikli jste na mě!“.
  4. Zde definujeme naši značku div pro použití vlastní směrnice ng-guru.

Pokud je kód úspěšně proveden, při spuštění kódu v prohlížeči se zobrazí následující výstup.

Výstup:

  • Zpočátku se uživateli zobrazí text „Click Me“, protože to bylo původně definováno ve značce div. Když skutečně kliknete na značku div, zobrazí se níže uvedený výstup

souhrn

  • Lze také vytvořit vlastní direktivu, kterou lze použít k vložení kódu do hlavní úhlové aplikace.
  • Je možné vytvořit vlastní směrnice pro volání členů definovaných v objektu oboru v určitém řadiči pomocí klíčových slov „Controller“, „controllerAs“ a „template“.
  • Direktivy lze také vnořit, aby poskytovaly vložené funkce, které mohou být vyžadovány v závislosti na potřebě aplikace.
  • Směrnice lze také znovu použít, takže je lze použít k vložení běžného kódu, který by mohl být vyžadován napříč různými webovými aplikacemi.
  • Směrnice lze také použít k vytvoření vlastních značek HTML, které by měly vlastní funkce definované podle obchodního požadavku.
  • Události lze také zpracovávat v rámci směrnic ke zpracování událostí DOM, jako jsou kliknutí na tlačítka a myši.