Что такое контроллер в AngularJs?
Контроллеры в AngularJs получают данные из представления, обрабатывают данные и затем отправляют эти данные в представление, которое отображается конечному пользователю. Контроллер будет иметь вашу основную бизнес-логику.
Контроллер будет использовать модель данных, выполнять необходимую обработку и затем передавать выходные данные в представление, которое, в свою очередь, отображается для конечного пользователя.
В этом уроке вы узнаете
- Что контролер делает с точки зрения Angular
- Как построить базовый контроллер
- Как определить методы в контроллере
- Использование ng-controller во внешних файлах
- Основная ответственность контроллера — контролировать данные, которые передаются в представление. Объем и вид имеют двустороннюю связь.
- Свойства представления могут вызывать «функции» в области видимости. Более того, события в представлении могут вызывать «методы» в области видимости. Приведенный ниже фрагмент кода дает простой пример функции.
- Функция ($ scope), которая определяется при определении контроллера, и внутренняя функция, которая используется для возврата конкатенации $ scope.firstName и $ scope.lastName.
- В AngularJS, когда вы определяете функцию как переменную, она называется методом.
- Данные таким образом передаются из контроллера в область, а затем данные передаются взад и вперед из области в представление.
- Область используется для представления модели представлению. Модель можно изменить с помощью методов, определенных в области, которые могут быть вызваны с помощью событий из представления. Мы можем определить двустороннюю привязку модели из области видимости к модели.
- Контроллеры в идеале не должны использоваться для манипулирования DOM. Это должно быть сделано директивами, которые мы увидим позже.
- Лучше всего иметь контроллер на основе функциональности. Например, если у вас есть форма для ввода и вам нужен контроллер для этого, создайте контроллер, называемый «контроллер формы».
Что делает контроллер с точки зрения Angular
Ниже приведено простое определение работы Angular JS Controller.
Как построить базовый контроллер
Прежде чем мы начнем с создания контроллера, нам нужно сначала установить базовую настройку HTML-страницы.
Приведенный ниже фрагмент кода представляет собой простую страницу HTML, которая имеет заголовок «Регистрация события» и содержит ссылки на важные библиотеки, такие как Bootstrap, jquery и Angular.
- Мы добавляем ссылки на таблицы стилей начальной загрузки CSS, которые будут использоваться вместе с библиотеками начальной загрузки.
- Мы добавляем ссылки на библиотеки angularjs. Так что теперь все, что мы делаем с angular.js в будущем, будет ссылаться из этой библиотеки.
- Мы добавляем ссылки на библиотеку начальной загрузки, чтобы сделать нашу веб-страницу более отзывчивой для определенных элементов управления.
- Мы добавили ссылки на библиотеки jquery, которые будут использоваться для манипулирования DOM. Это требуется Angular, потому что некоторые функции Angular зависят от этой библиотеки.
По умолчанию приведенный выше фрагмент кода будет присутствовать во всех наших примерах, так что мы можем показать только конкретный код angularJS в последующих разделах.
Во-вторых, давайте посмотрим на наши файлы и файловую структуру, с которой мы собираемся начать на протяжении нашего курса.
- Сначала мы разделяем наши файлы на 2 папки, как это делается в любом обычном веб-приложении. У нас есть папка «CSS». Он будет содержать все наши файлы каскадных таблиц стилей, а затем у нас будет папка «lib», в которой будут все наши файлы JavaScript .
- Файл bootstrap.css находится в папке CSS и используется для придания привлекательности нашему веб-сайту.
- Angular.js — это наш основной файл, который был загружен с сайта angularJS и хранится в нашей папке lib.
- Файл app.js будет содержать наш код для контроллеров.
- Файл bootstrap.js используется для дополнения файла bootstrap.cs для добавления функциональности bootstrap в наше веб-приложение.
- Файл jquery будет использоваться для добавления функциональности манипулирования DOM на наш сайт.
Давайте рассмотрим пример использования angular.js,
Здесь мы хотим просто отобразить слова «AngularJS» как в текстовом формате, так и в текстовом поле при просмотре страницы в браузере.
<!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>
Объяснение кода:
- Нг-приложение ключевое слово используется для обозначения того, что данное приложение следует рассматривать в качестве углового применения. Все, что начинается с префикса ‘ng’, называется директивой. «DemoApp» — это имя, данное нашему приложению Angular.JS.
- Мы создали тег div и в этот тег мы добавили директиву ng-controller вместе с именем нашего контроллера «DemoController». Это в основном делает наш тег div возможностью доступа к содержимому демо-контроллера. Вы должны указать имя контроллера в директиве, чтобы убедиться, что вы можете получить доступ к функциям, определенным в контроллере.
- Мы создаем привязку модели, используя директиву ng-model. Что он делает, так это то, что он привязывает текстовое поле для имени учебника к привязке к переменной-члену «tutorialName».
- Мы создаем переменную-член с именем «tutorialName», которая будет использоваться для отображения информации, которую пользователь вводит в текстовое поле для имени учебника.
- Мы создаем модуль, который будет прикреплен к нашему приложению DemoApp. Таким образом, этот модуль теперь становится частью нашего приложения.
- В модуле мы определяем функцию, которая присваивает значение по умолчанию «AngularJS» нашей переменной tutorialName.
Если команда выполнена успешно, при запуске кода в браузере будет показан следующий вывод.
Вывод:
Так как мы присвоили переменной tutorialName значение «Angular JS», это отображается в текстовом поле и в текстовой строке.
Как определить методы в контроллере
Обычно желательно определить несколько методов в контроллере для разделения бизнес-логики.
Например, предположим, что если вы хотите, чтобы ваш контроллер выполнял 2 основных действия,
- Выполните сложение 2 чисел
- Выполнить вычитание из 2 чисел
В идеале вы должны создать 2 метода внутри вашего контроллера: один для сложения, а другой для вычитания.
Давайте рассмотрим простой пример того, как вы можете определить пользовательские методы в контроллере Angular.JS. Контроллер просто вернет строку.
<!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>
Объяснение кода:
- Здесь мы просто определяем функцию, которая возвращает строку «AngularJS». Функция присоединяется к объекту области через переменную-член с именем tutorialName.
- Если команда выполнена успешно, при запуске кода в браузере будет показан следующий вывод.
Вывод:
Использование ng-controller во внешних файлах
Давайте рассмотрим пример «HelloWorld», где все функции были размещены в одном файле. Теперь пришло время разместить код для контроллера в отдельных файлах.
Давайте выполните следующие шаги, чтобы сделать это.
Шаг 1) В файле app.js добавьте следующий код для вашего контроллера
angular.module('app',[]).controller('HelloWorldCtrl',function($scope) { $scope.message = "Hello World" });
Приведенный выше код выполняет следующие действия:
- Определите модуль под названием «приложение», который будет держать контроллер вместе с функциональностью контроллера.
- Создайте контроллер с именем «HelloWorldCtrl». Этот контроллер будет использоваться для отображения сообщения «Hello World».
- Объект области видимости используется для передачи информации от контроллера в представление. Таким образом, в нашем случае объект области будет использоваться для хранения переменной с именем «message».
- Мы определяем переменную message и присваиваем ей значение «Hello World».
Шаг 2) Теперь в вашем файле Sample.html добавьте класс div, который будет содержать директиву ng-controller, а затем добавьте ссылку на переменную-член «message»
Также не забудьте добавить ссылку на файл сценария app.js, в котором есть исходный код вашего контроллера.
<!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>
Если указанный выше код введен правильно, при запуске кода в браузере будет показан следующий вывод.
Вывод:
Резюме
- Основная ответственность контроллера заключается в создании объекта области видимости, который, в свою очередь, передается в представление.
- Как создать простой контроллер, используя директивы ng-app, ng-controller и ng-model
- Как добавить пользовательские методы в контроллер, которые можно использовать для разделения различных функций в модуле angularjs.
- Контроллеры могут быть определены во внешних файлах, чтобы отделить этот слой от слоя View. Обычно это лучшая практика при создании веб-приложений.