IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

AngularJS hotkeys

AngularJS hotkeys je veľmi jednoduchá komponenta, ktorá umožní jednoduché spracovanie klávesových skratiek. Tie totiž môžu byť dôležité pre jednoduché ovládanie a tak i prívetivosť aplikácie. Ich ručné spracovanie je však dosť zdĺhavé a náročné. Zvlášť ak je klávesových skratiek veľa alebo ak aplikácia ponúka možnosť prerobiť si tieto klávesové skratky podľa seba.

Inštalácia a nastavenie

Komponent možno ľahko nainštalovať pomocou bower alebo stiahnutím z repozitára

bower install angular-hotkeys

Samotná komponenta je jediný súbor, ktorý má (bez minimalizácia, so všetkými JSDoc komentármi) okolo 200 riadok. Stačí ho len pridať do stránky a modulu, kde chceme skratky používať, pridať závislosť drahak.hotkeys.

angular.module('app', ['drahak.hotkeys']);

Použitia klávesových skratiek

Pre zaregistrovanie klávesové skratky môžeme použiť službu $hotkey. Tá zaregistruje udalosť na globálnom objektu window. Pokiaľ chcete použiť skratky len v kontexte ktoréhokoľvek iného HTML elementu, možno použiť továrenské funkcie HotkeysElement, ktorá ako jediný argument vyžaduje práve HTMLElement a vytvorí službu HotKey.

Udalosti sa pridávajú pomocou metódy bind. Ako prvý argument môžeme zadať textový reťazec vyjadrujúce klávesovú skratku, kde každá klávesa je oddelená znakom +. Môžeme použiť špeciálne výrazy ako napr. Esc, Ctrl, Control, Enter, left, up, down, right pod. Tento výraz je spracovaný službou ParseKey, ktorá z textového výrazu urobí poľa kódov jednotlivých kláves. Nezáleží na veľkých / malých písmenách. Druhý argument je funkcia pre spracovanie udalosti.

$hotkey.bind('Ctrl + B', function(event) {
    // zpracování zkratky Ctrl + B
});

Pár ďalších príkladov platných výrazov:

Ctrl + Shift + E
ContRoL + escape + a
shift + A
A+B
E +r

Direktíva

Klávesové skratky môžeme vkladať aj pomocou direktívy hotkey, ktorú možno použiť ako element alebo atribút. Pokiaľ ju použijeme ako element, bude registrovať všetky udalosti na objekte window (budú globálne pre celú aplikáciu). Atribút hotkey zase zaregistruje udalosť len na danom elementu. Udalosť, ktorá sa má vykonať, potom dáme do atribútu invoke. Do neho môžeme vložiť normálne AngularJS výraz, ktorý sa vykoná s lokálnou premennou $event (rovnako ako všetky direktívy udalostí v AngularJS - ngChange, ngClick pod.)

<div hotkey="Esc" invoke="close($event)"></div>
<hotkey bind="Esc" invoke="close($event)"  />

Ak je potrebné zaregistrovať viac udalostí, môžeme uviesť objekt priamo v atribúte hotkey (alebo ho odovzdať zo scope z controllera), kde kľúč bude klávesová skratka a hodnota referencie na funkciu. V tomto prípade nejde uviesť AngularJS výraz a odovzdané funkcie budú zavolaný s parametrom Event.

<div hotkey="{ 'Esc': close, 'Ctrl + C': close }"></div>
<hotkey bind="{ 'Esc': close, 'Ctrl + C': close }" />

Vývoj

Urobili by ste niečo lepšie? Nebojte sa poslať pull-request do GIT repozitára Testy sú napísané v knižnici JsamineBDD a možno ich spustiť pomocou test runner Karma.

karma start karma.conf.js

Galéria


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 230x (6.35 kB)
Aplikácia je vrátane zdrojových kódov v jazyku JavaScript

 

Všetky články v sekcii
AngularJS
Preskočiť článok
(neodporúčame)
AngularJS filtre &amp; moduly
Program pre vás napísal Drahomír Hanák
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor v současné době studuje Informatiku. Zajímá se o programování, matematiku a grafiku.
Aktivity