Учебники

17) Стол AngularJS

Таблицы являются одним из распространенных элементов, используемых в HTML при работе с веб-страницами.

Таблицы в HTML разработаны с использованием тега HTML

  1. Тег <table> — это основной тег, используемый для отображения таблицы.
  2. <tr> — Этот тег используется для разделения строк в таблице.
  3. <td> — этот тег используется для отображения фактических данных таблицы.
  4. <th> — используется для данных заголовка таблицы.

Используя вышеупомянутые HTML-теги вместе с AngularJS, мы можем упростить заполнение данных таблицы. Короче говоря, директива ng-repeat используется для заполнения табличных данных.

Мы рассмотрим, как этого добиться в этой главе. Мы также рассмотрим, как мы можем использовать фильтры orderby и прописные буквы вместе с атрибутом $ index для отображения индексов угловых таблиц.

В этом уроке вы узнаете

Заполнение и отображение данных в таблице

Как мы уже обсуждали во введении к этой главе, основа для создания структуры таблицы на странице HTML остается прежней.

Структура таблицы по-прежнему создается с использованием обычных HTML-тегов <table>, <tr>, <td> и <th>. Однако данные заполняются с помощью директивы ng-repeat в AngularJS.

Давайте рассмотрим простой пример того, как мы можем реализовать угловые таблицы.

В этом примере

Мы собираемся создать угловую таблицу, в которой будут темы курса и их описания.

Шаг 1) Сначала мы добавим тег «style» на нашу HTML-страницу, чтобы таблица могла отображаться в виде правильной таблицы.

Угловой стол: учиться за 10 минут!

  1. Тег стиля добавляется на страницу HTML. Это стандартный способ добавления любых атрибутов форматирования, которые требуются для элементов HTML.
  2. Мы добавляем два значения стиля в нашу таблицу.
  • Одним из них является то, что должна быть сплошная граница для нашей угловой таблицы и
  • Во-вторых, для данных нашей угловой таблицы должно быть заполнение.

Шаг 2) Следующий шаг — написать код для генерации таблицы и ее данных.

Угловой стол: учиться за 10 минут!

<!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>

Объяснение кода:

  1. Сначала мы создаем переменную с именем «tutorial» и присваиваем ей несколько пар ключ-значение за один шаг. Каждая пара ключ-значение будет использоваться в качестве данных при отображении таблицы. Затем переменная учебника присваивается объекту области видимости, чтобы к нему можно было получить доступ из нашего представления.
  2. Это первый шаг в создании таблицы, и мы используем тег <table>.
  3. Для каждой строки данных мы используем «директиву ng-repeat». Эта директива проходит через каждую пару ключ-значение в объекте tuto, rial scope с помощью переменной ptutor.
  4. Наконец, мы используем тег <td> вместе с парами ключ-значение (ptutor.Name и ptutor.Description) для отображения данных таблицы углов.

Если код выполнен успешно, при запуске кода в браузере будет показан следующий вывод.

Вывод:

Угловой стол: учиться за 10 минут!

Из приведенного выше вывода,

  • Мы видим, что таблица отображается правильно с данными из массива пар ключ-значение, определенных в контроллере.
  • Данные таблицы были сгенерированы путем прохождения каждой пары ключ-значение с помощью «директивы ng-repeat».

AngularJS встроенный фильтр

Очень часто используются встроенные фильтры в AngularJS, чтобы изменить способ отображения данных в таблицах. Мы уже видели фильтры в действии в предыдущей главе. Давайте сделаем краткий обзор фильтров, прежде чем мы продолжим.

В Angular.JS фильтры используются для форматирования значения выражения до его отображения пользователю. Примером фильтра является фильтр «верхнего регистра», который принимает вывод строки, форматирует строку и отображает все символы в строке в верхнем регистре.

Таким образом, в приведенном ниже примере, если значение переменной ‘TutorialName’ равно ‘AngularJS’, результатом выражения ниже будет ‘ANGULARJS’.

{{TurotialName | верхний регистр }}

В этом разделе мы рассмотрим, как фильтры orderBy и прописные буквы могут использоваться в таблицах более подробно.

Таблица сортировки с фильтром OrderBy

Этот фильтр используется для сортировки таблицы по одному из столбцов таблицы. В предыдущем примере вывод для наших данных угловой таблицы выглядел так, как показано ниже.

Контроллеры Контроллеры в действии
модели Модели и данные привязки
Директивы Гибкость директив

Давайте рассмотрим пример того, как мы можем использовать фильтр «orderBy» и сортировать данные угловой таблицы, используя первый столбец в таблице.

Угловой стол: учиться за 10 минут!

<!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>

Объяснение кода:

  1. Мы используем тот же код, что и для создания нашей таблицы, единственное отличие на этот раз в том, что мы используем фильтр «orderBy» вместе с директивой ng-repeat. В данном случае мы говорим, что хотим упорядочить таблицу по ключу «Имя».

Если код выполнен успешно, при запуске кода в браузере будет показан следующий вывод.

Вывод:

Угловой стол: учиться за 10 минут!

Из вывода

  • Мы можем видеть, что данные в угловой таблице были отсортированы в соответствии с данными в первом столбце. В нашем наборе данных данные «Директивы» поступают из данных «Модели», но поскольку мы применили фильтр orderBy, таблицы сортируются соответствующим образом.

Показать таблицу с верхним регистром фильтра

Мы также можем использовать фильтр верхнего регистра, чтобы изменить данные в угловой таблице на верхний регистр.

Давайте посмотрим на пример того, как мы можем достичь этого.

Угловой стол: учиться за 10 минут!

<!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>

Объяснение кода:

  1. Мы используем тот же код, что и для создания нашей таблицы, единственное отличие на этот раз в том, что мы используем фильтр в верхнем регистре. Мы используем этот фильтр вместе с «ptutor.Name», чтобы весь текст в первом столбце отображался в верхнем регистре.

Если код выполнен успешно, при запуске кода в браузере будет показан следующий вывод.

Вывод:

Угловой стол: учиться за 10 минут!

Из вывода

  • Мы можем видеть, что с помощью фильтра «прописные буквы» все данные в первом столбце отображаются заглавными буквами.

Показать индекс таблицы ($ index)

Чтобы отобразить индекс таблицы, добавьте <td> с $ index.

Давайте посмотрим на пример того, как мы можем достичь этого.

Угловой стол: учиться за 10 минут!

<!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>

Объяснение кода:

  1. Мы используем тот же код, что и для создания нашей таблицы, единственное отличие на этот раз в том, что мы добавляем в нашу таблицу дополнительную строку для отображения столбца индекса.

    В этом дополнительном столбце мы используем свойство «$ index», предоставляемое AngularJS, а затем используем оператор +1 для увеличения индекса для каждой строки.

Если код выполнен успешно, при запуске кода в браузере будет показан следующий вывод.

Вывод:

Угловой стол: учиться за 10 минут!

Из вывода

  • Вы можете видеть, что был создан дополнительный столбец. В этом столбце мы видим индексы, создаваемые для каждой строки.

Резюме:

  • Структуры таблиц создаются с использованием стандартных тегов, доступных в HTML. Данные в таблице заполняются с использованием директивы ng-repeat.
  • Фильтр orderBy можно использовать для сортировки таблицы по любому столбцу в таблице.
  • Фильтр в верхнем регистре можно использовать для отображения данных в любом текстовом столбце в верхнем регистре.
  • Свойство «$ index» можно использовать для создания индекса для таблицы.
  • Одной из распространенных проблем, возникающих при разработке таблиц AngularJS.JS, является реализация больших наборов данных, содержащих более 1000 строк данных. Иногда директива ng-repeat может перестать отвечать, и, следовательно, иногда вся страница перестает отвечать на запросы. В таком случае всегда лучше иметь нумерацию страниц, в которой строки данных распределены по нескольким страницам.