Tabulka AngularJS: řazení, řazení podle a filtr velkých písmen [Příklady]

Tabulky jsou jedním z běžných prvků používaných v HTML při práci s webovými stránkami.

Tabulky v HTML jsou navrženy pomocí HTML tagu

  1. tag – Toto je hlavní tag používaný pro zobrazení tabulky.
  2. – Tato značka se používá k oddělení řádků v tabulce.
  3. – Tento tag se používá pro zobrazení aktuálních dat tabulky.
  4. – Používá se pro data záhlaví tabulky.

Pomocí výše uvedených dostupných značek HTML spolu s AngularJS, můžeme usnadnit naplnění tabulkových dat. Stručně řečeno, direktiva ng-repeat slouží k vyplnění dat tabulky.

V této kapitole se podíváme na to, jak toho dosáhnout. Podíváme se také na to, jak můžeme použít filtry orderby a velká písmena spolu s použitím atributu $index k zobrazení indexů Angular tabulky.

Naplnit a zobrazit data v tabulce

Jak jsme probrali v úvodu této kapitoly, základ pro vytvoření struktury tabulky na stránce HTML zůstává stejný.

Struktura tabulky je stále vytvořena pomocí běžných HTML tagů , , a . Data jsou však naplněna pomocí direktivy ng-repeat v AngularJS.
Podívejme se na jednoduchý příklad, jak můžeme implementovat Angular tabulky.
V tomto příkladu

Vytvoříme Angular tabulku, která bude mít témata kurzů spolu s jejich popisy.

Krok 1) Nejprve přidáme značku „style“ na naši stránku HTML, aby bylo možné tabulku zobrazit jako správnou tabulku.

Naplnit a zobrazit data v tabulce

  1. Značka stylu se přidá na stránku HTML. Toto je standardní způsob, jak přidat jakékoli atributy formátování, které jsou vyžadovány pro prvky HTML.
  2. Do naší tabulky přidáváme dvě hodnoty stylu.
  • Jedním z nich je, že by měl existovat pevný okraj pro náš hranatý stůl a
  • Druhým je, že by měla být zavedena výplň pro naše data Angular tabulky.

Krok 2) Dalším krokem je zapsání kódu pro vygenerování tabulky a jejích dat.

Naplnit a zobrazit data v tabulce

<!DOCTYPE html>
<html>
<head>

    <meta chrset="UTF 8">

</head>
<body>
<title>Event Registration</title>
<style>
    table,th,td{
        border: 1px solid grey;
        padding:5px;
    }
</style>
<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/bootstrap.css"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="DemoApp" ng-controller="DemoController">
    <table>
        <tr ng-repeat="ptutor in tutorial">
            <td>{{ptutor.Name}}</td>
            <td>{{ptutor.Description}}</td>
        </tr>
    </table>
</div>

<script type="text/javascript">
    var app = angular.module('DemoApp',[]);

    app.controller('DemoController',function($scope) {

        $scope.tutorial = [
            {Name:"Controllers",Description :"Controllers in action"},
            {Name:"Models",Description :"Models and binding data"},
            {Name:"Directives",Description :"Flexibility of Directives"}
        ]});
</script>
</body>
</html>

Vysvětlení kódu

  1. Nejprve vytvoříme proměnnou nazvanou „tutorial“ a v jednom kroku jí přiřadíme několik párů klíč–hodnota. Každý pár klíč–hodnota bude použit jako data při zobrazení tabulky. Proměnná tutoriálu je pak přiřazena k objektu scope, takže k ní lze přistupovat z našeho pohledu.
  2. Toto je první krok při vytváření tabulky a používáme štítek.
  3. Pro každý řádek dat používáme direktivu „ng-repeat“. Tato direktiva prochází každý pár klíč–hodnota v objektu rozsahu kurzu pomocí proměnné ptutor.
  4. Nakonec používáme tag spolu s páry klíč–hodnota (ptutor.Name a ptutor.Description) pro zobrazení dat úhlové tabulky.

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

Výstup

Naplnit a zobrazit data v tabulce

Z výše uvedeného výstupu

  • Vidíme, že tabulka je zobrazena správně s daty z pole párů klíč-hodnota definovaných v kontroléru.
  • Data tabulky byla vygenerována procházením každého z párů klíč-hodnota pomocí direktivy „ng-repeat“.

AngularJS vestavěný filtr

Je velmi běžné používat vestavěné filtry v AngularJS ke změně způsobu zobrazení dat v tabulkách. Filtry v akci jsme již viděli v dřívější kapitole. Udělejme si rychlou rekapitulaci filtrů, než budeme pokračovat.

V Angular.JS se filtry používají k formátování hodnoty výrazu předtím, než se zobrazí uživateli. Příkladem filtru je filtr 'velká písmena', který přebírá výstup řetězce a formátuje řetězec a zobrazuje všechny znaky v řetězci jako velká písmena.

Takže v níže uvedeném příkladu, pokud je hodnota proměnné 'TutorialName' 'AngularJS', výstup níže uvedeného výrazu bude 'ANGULARJS'.

{{ TurotialName | uppercase }}

V této části se podrobněji podíváme na to, jak lze v tabulkách použít filtry orderBy a velká písmena.

Seřadit tabulku pomocí filtru OrderBy

Tento filtr se používá k řazení tabulky na základě jednoho ze sloupců tabulky. V předchozím příkladu se výstup pro data naší úhlové tabulky objevil tak, jak je uvedeno níže.

řadiče Ovladače v akci
modely Modely a vazebná data
Směrnice Flexibilita směrnic

Podívejme se na příklad, jak můžeme použít filtr „orderBy“ a třídit data Angular tabulky pomocí prvního sloupce v tabulce.

Seřadit tabulku pomocí filtru OrderBy

<!DOCTYPE html>
<html>
<head>

    <meta chrset="UTF 8">

</head>
<body>
<title>Event Registration</title>
<style>
    table,th,td{
        border: 1px solid grey;
        padding:5px;
    }
</style>
<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/bootstrap.css"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="DemoApp" ng-controller="DemoController">
    <table>
        <tr ng-repeat="ptutor in tutorial | orderBy : 'Name'">
            <td>{{ptutor.Name}}</td>
            <td>{{ptutor.Description}}</td>
        </tr>
    </table>
</div>

<script type="text/javascript">
    var app = angular.module('DemoApp',[]);

    app.controller('DemoController',function($scope) {

        $scope.tutorial = [
            {Name:"Controllers",Description :"Controllers in action"},
            {Name:"Models",Description :"Models and binding data"},
            {Name:"Directives",Description :"Flexibility of Directives"}
        ]});
</script>
</body>
</html>

Vysvětlení kódu

  1. Používáme stejný kód jako při vytváření naší tabulky, jediný rozdíl je tentokrát v tom, že používáme filtr „orderBy“ spolu s direktivou ng-repeat. V tomto případě říkáme, že chceme stůl objednat pomocí klíče „Jméno“.

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

Výstup

Seřadit tabulku pomocí filtru OrderBy

Z výstupu,

  • Vidíme, že data v tabulce Angular byla seřazena podle dat v prvním sloupci. V naší datové sadě data „Directives“ pocházejí z dat „Models“, ale protože jsme použili filtr orderBy, tabulky jsou seřazeny podle toho.

Zobrazit tabulku s filtrem velkých písmen

Pomocí filtru velkých písmen můžeme také změnit data v tabulce Angular na velká písmena.

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

Zobrazit tabulku s filtrem velkých písmen

<!DOCTYPE html>
<html>
<head>

    <meta chrset="UTF 8">

</head>
<body>
<title>Event Registration</title>
<style>
    table,th,td{
        border: 1px solid grey;
        padding:5px;
    }
</style>
<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/bootstrap.css"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="DemoApp" ng-controller="DemoController">
    <table>
        <tr ng-repeat="ptutor in tutorial">
            <td>{{ptutor.Name | uppercase}}</td>
            <td>{{ptutor.Description}}</td>
        </tr>
    </table>
</div>

<script type="text/javascript">
    var app = angular.module('DemoApp',[]);

    app.controller('DemoController',function($scope) {

        $scope.tutorial = [
            {Name:"Controllers",Description :"Controllers in action"},
            {Name:"Models",Description :"Models and binding data"},
            {Name:"Directives",Description :"Flexibility of Directives"}
        ]});
</script>
</body>
</html>

Vysvětlení kódu

  1. Používáme stejný kód jako při vytváření naší tabulky, jediný rozdíl je tentokrát v tom, že používáme filtr velkých písmen. Tento filtr používáme ve spojení s „ptutor.Name“, takže veškerý text v prvním sloupci bude zobrazen velkými písmeny.

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

Výstup

Zobrazit tabulku s filtrem velkých písmen

Z výstupu,

  • Vidíme, že při použití filtru „velká písmena“ jsou všechna data v prvním sloupci zobrazena velkými písmeny.

Zobrazit index tabulky ($index)

Chcete-li zobrazit index tabulky, přidejte a s $index.

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

Zobrazte rejstřík tabulky

<!DOCTYPE html>
<html>
<head>

    <meta chrset="UTF 8">

</head>
<body>
<title>Event Registration</title>
<style>
    table,th,td{
        border: 1px solid grey;
        padding:5px;
    }
</style>
<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/bootstrap.css"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="DemoApp" ng-controller="DemoController">
    <table>
        <tr ng-repeat="ptutor in tutorial">
            <td>{{$index + 1}}</td>
            <td>{{ptutor.Name}}</td>
            <td>{{ptutor.Description}}</td>
        </tr>
    </table>
</div>

<script type="text/javascript">
    var app = angular.module('DemoApp',[]);

    app.controller('DemoController',function($scope) {

        $scope.tutorial = [
            {Name:"Controllers",Description :"Controllers in action"},
            {Name:"Models",Description :"Models and binding data"},
            {Name:"Directives",Description :"Flexibility of Directives"}
        ]});
</script>
</body>
</html>

Vysvětlení kódu

  1. Používáme stejný kód jako při vytváření naší tabulky, jediný rozdíl je tentokrát v tom, že do naší tabulky přidáváme další řádek pro zobrazení sloupce indexu. V tomto dalším sloupci používáme vlastnost „$index“ poskytuje AngularJS a poté pomocí operátoru +1 zvýšíte index pro každý řádek.

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

Výstup

Zobrazte rejstřík tabulky

Z výstupu,

  • Můžete vidět, že byl vytvořen další sloupec. V tomto sloupci vidíme indexy vytvářené pro každý řádek.

Shrnutí

  • Struktury tabulek jsou vytvářeny pomocí standardních značek dostupných v rámci HTML. Data v tabulce se vyplňují pomocí direktivy „ng-repeat“.
  • Filtr orderBy lze použít k seřazení tabulky na základě libovolného sloupce v tabulce.
  • Filtr velkých písmen lze použít k zobrazení dat v libovolném textovém sloupci velkými písmeny.
  • Vlastnost „$index“ lze použít k vytvoření indexu pro tabulku.
  • Jedním z běžných problémů, se kterými se setkáváme během vývoje s tabulkami AngularJS.JS, je implementace velkých datových sad, které mají více než 1000 řádků dat. Někdy ng-opakovat direktiva může přestat reagovat, a proto celá stránka občas přestane reagovat. V takovém případě je vždy lepší mít stránkování, ve kterém jsou řádky dat rozloženy na více stránek.