Учебники

3) Контроллер

Что такое контроллер в AngularJs?

Контроллеры в AngularJs получают данные из представления, обрабатывают данные и затем отправляют эти данные в представление, которое отображается конечному пользователю. Контроллер будет иметь вашу основную бизнес-логику.

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

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

  1. Мы добавляем ссылки на таблицы стилей начальной загрузки CSS, которые будут использоваться вместе с библиотеками начальной загрузки.
  2. Мы добавляем ссылки на библиотеки angularjs. Так что теперь все, что мы делаем с angular.js в будущем, будет ссылаться из этой библиотеки.
  3. Мы добавляем ссылки на библиотеку начальной загрузки, чтобы сделать нашу веб-страницу более отзывчивой для определенных элементов управления.
  4. Мы добавили ссылки на библиотеки jquery, которые будут использоваться для манипулирования DOM. Это требуется Angular, потому что некоторые функции Angular зависят от этой библиотеки.

По умолчанию приведенный выше фрагмент кода будет присутствовать во всех наших примерах, так что мы можем показать только конкретный код angularJS в последующих разделах.

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

Контроллер AngularJS: учиться за 10 минут!

  1. Сначала мы разделяем наши файлы на 2 папки, как это делается в любом обычном веб-приложении. У нас есть папка «CSS». Он будет содержать все наши файлы каскадных таблиц стилей, а затем у нас будет папка «lib», в которой будут все наши файлы JavaScript .
  2. Файл bootstrap.css находится в папке CSS и используется для придания привлекательности нашему веб-сайту.
  3. Angular.js — это наш основной файл, который был загружен с сайта angularJS и хранится в нашей папке lib.
  4. Файл app.js будет содержать наш код для контроллеров.
  5. Файл bootstrap.js используется для дополнения файла bootstrap.cs для добавления функциональности bootstrap в наше веб-приложение.
  6. Файл jquery будет использоваться для добавления функциональности манипулирования DOM на наш сайт.

Давайте рассмотрим пример использования angular.js,

Здесь мы хотим просто отобразить слова «AngularJS» как в текстовом формате, так и в текстовом поле при просмотре страницы в браузере.

Контроллер AngularJS: учиться за 10 минут!

<!DOCTYPE html>
<html>
<head>
	<meta chrset="UTF 8">
	<link rel="stylesheet" href="css/bootstrap.css"/>
</head>
<body>
<h1> Guru99 Global Event</h1>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/jquery-1.11.3.min.js"></script>

<div ng-app="DemoApp" ng-controller="DemoController">

	Tutorial Name : <input type="text" ng-model="tutorialName"><br>

	This tutorial is {{tutorialName}}
</div>
<script>
	var app = angular.module('DemoApp',[]);

	app.controller('DemoController', function($scope){
	$scope.tutorialName = "Angular JS";
	});
</script>

</body>
</html>

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

  1. Нг-приложение ключевое слово используется для обозначения того, что данное приложение следует рассматривать в качестве углового применения. Все, что начинается с префикса ‘ng’, называется директивой. «DemoApp» — это имя, данное нашему приложению Angular.JS.
  2. Мы создали тег div и в этот тег мы добавили директиву ng-controller вместе с именем нашего контроллера «DemoController». Это в основном делает наш тег div возможностью доступа к содержимому демо-контроллера. Вы должны указать имя контроллера в директиве, чтобы убедиться, что вы можете получить доступ к функциям, определенным в контроллере.
  3. Мы создаем привязку модели, используя директиву ng-model. Что он делает, так это то, что он привязывает текстовое поле для имени учебника к привязке к переменной-члену «tutorialName».
  4. Мы создаем переменную-член с именем «tutorialName», которая будет использоваться для отображения информации, которую пользователь вводит в текстовое поле для имени учебника.
  5. Мы создаем модуль, который будет прикреплен к нашему приложению DemoApp. Таким образом, этот модуль теперь становится частью нашего приложения.
  6. В модуле мы определяем функцию, которая присваивает значение по умолчанию «AngularJS» нашей переменной tutorialName.

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

Вывод:

Контроллер AngularJS: учиться за 10 минут!

Так как мы присвоили переменной tutorialName значение «Angular JS», это отображается в текстовом поле и в текстовой строке.

Как определить методы в контроллере

Обычно желательно определить несколько методов в контроллере для разделения бизнес-логики.

Например, предположим, что если вы хотите, чтобы ваш контроллер выполнял 2 основных действия,

  1. Выполните сложение 2 чисел
  2. Выполнить вычитание из 2 чисел

В идеале вы должны создать 2 метода внутри вашего контроллера: один для сложения, а другой для вычитания.

Давайте рассмотрим простой пример того, как вы можете определить пользовательские методы в контроллере Angular.JS. Контроллер просто вернет строку.

Контроллер AngularJS: учиться за 10 минут!

<!DOCTYPE html>
<html>
<head>
	<meta chrset="UTF 8">
	<title>Event Registration</title>
	<link rel="stylesheet" href="css/bootstrap.css"/>
</head>
<body ng-app="DemoApp">
<h1> Guru99 Global Event</h1>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/jquery-1.11.3.min.js"></script>

<div ng-app="DemoApp" ng-controller="DemoController">
	Tutorial Name :<input type="text" ng-model="tutorialName"><br>
	<br>
	This tutorial is {{tutorialName}}	
</div>

<script>
var app = angular.module('DemoApp', []);
app.controller('DemoController', function($scope) {
    $scope.tutorialName = "Angular JS";
	$scope.tName = function() {
        return $scope.tName;
    };
});
</script>	
</body>
</html>

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

  1. Здесь мы просто определяем функцию, которая возвращает строку «AngularJS». Функция присоединяется к объекту области через переменную-член с именем tutorialName.
  2. Если команда выполнена успешно, при запуске кода в браузере будет показан следующий вывод.

Вывод:

Контроллер AngularJS: учиться за 10 минут!

Использование ng-controller во внешних файлах

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

Давайте выполните следующие шаги, чтобы сделать это.

Шаг 1) В файле app.js добавьте следующий код для вашего контроллера

Контроллер AngularJS: учиться за 10 минут!

angular.module('app',[]).controller('HelloWorldCtrl',function($scope)
{
	$scope.message = "Hello World"
});

Приведенный выше код выполняет следующие действия:

  1. Определите модуль под названием «приложение», который будет держать контроллер вместе с функциональностью контроллера.
  2. Создайте контроллер с именем «HelloWorldCtrl». Этот контроллер будет использоваться для отображения сообщения «Hello World».
  3. Объект области видимости используется для передачи информации от контроллера в представление. Таким образом, в нашем случае объект области будет использоваться для хранения переменной с именем «message».
  4. Мы определяем переменную message и присваиваем ей значение «Hello World».

Шаг 2) Теперь в вашем файле Sample.html добавьте класс div, который будет содержать директиву ng-controller, а затем добавьте ссылку на переменную-член «message»

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

Контроллер AngularJS: учиться за 10 минут!

<!DOCTYPE html>
<html ng-app="app">
<head>
	<meta chrset="UTF 8">
	<title>Event Registration</title>
	<link rel="stylesheet" href="css/bootstrap.css"/>
</head>
<body>
<h1> Guru99 Global Event</h1>
<div class="container">
	<div ng-controller="HelloWorldCtrl">{{message}}</div>
</div>

<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/jquery-1.11.3.min.js"></script>

<script src="app.js"></script>

</body>
</html>

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

Вывод:

Контроллер AngularJS: учиться за 10 минут!

Резюме

  • Основная ответственность контроллера заключается в создании объекта области видимости, который, в свою очередь, передается в представление.
  • Как создать простой контроллер, используя директивы ng-app, ng-controller и ng-model
  • Как добавить пользовательские методы в контроллер, которые можно использовать для разделения различных функций в модуле angularjs.
  • Контроллеры могут быть определены во внешних файлах, чтобы отделить этот слой от слоя View. Обычно это лучшая практика при создании веб-приложений.