Пример маршрутизации AngularJS — ngRoute, $routeProvider
Сегодня мы рассмотрим пример маршрутизации AngularJS с использованием модуля ngRoute и $routeProvider. Ранее мы рассмотрели контроллеры AngularJS.
Маршрутизация в AngularJS
нгрут
Модуль AngularJS ngRoute предоставляет услуги маршрутизации, глубинных ссылок и директив для приложений angular. Нам нужно загрузить скрипт angular-route.js
, содержащий модуль ngRoute, с официального сайта AngularJS, чтобы использовать функцию маршрутизации. Вы также можете использовать CDN в своем приложении, чтобы включить этот файл. В этом уроке мы будем использовать Google CDN. https://ajax.googleapis.com/ajax/libs/angularjs/1.2.28//angular-route.min.js
Если вы связываете этот файл со своим приложением, вы можете добавить его на свою страницу с кодом ниже.
<script src="angular-route.js">
Если вы хотите включить его из Google CDN, используйте приведенный ниже код.
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.28//angular-route.min.js"></script>
Затем загрузите модуль ngRoute в свое приложение AngularJS, добавив его в качестве зависимого модуля, как показано ниже.
angular.module('appName', ['ngRoute']);
ngView
Директива ngView используется для отображения HTML-шаблонов или представлений в указанных маршрутах. Каждый раз, когда изменяется текущий маршрут, включенное представление изменяется вместе с ним в соответствии с конфигурацией службы $route.
$routeProvider
$routeProvider используется для настройки маршрутов. Мы используем ngRoute config() для настройки $routeProvider. config()
принимает функцию, которая принимает $routeProvider
в качестве параметра, и конфигурация маршрутизации входит в функцию. $routeProvider имеет простой API, принимающий метод when()
или иначе()
.
Синтаксис маршрутизации AngularJS
Следующий синтаксис используется для настройки маршрутов в AngularJS.
var app = angular.module("appName", ['ngRoute']);
app.config(function($routeProvider) {
$routeProvider
.when('/view1', {
templateUrl: 'view1.html',
controller: 'FirstController'
})
.when('/view2', {
templateUrl: 'view2.html',
controller: 'SecondController'
})
.otherwise({
redirectTo: '/view1'
});
});
Метод when()
принимает путь и маршрут в качестве параметров. путь является частью URL-адреса после символа #. route содержит два свойства — templateUrl
и controller
. Свойство templateUrl определяет, какой HTML-шаблон AngularJS должен загружать и отображать внутри div с помощью директивы ngView
. Свойство контроллера определяет, какие контроллеры следует использовать с шаблоном HTML. Когда приложение загружается, путь сопоставляется с частью URL-адреса после символа #. Если ни один путь маршрута не соответствует заданному URL-адресу, браузер будет перенаправлен на путь, указанный в функции else().
Пример маршрутизации AngularJS
Теперь давайте рассмотрим простой пример, чтобы понять маршрутизацию AngularJS. Сначала мы определим модуль, несколько маршрутов, создадим контроллеры и создадим несколько представлений. Наконец, мы создадим страницу оболочки нашего приложения для хранения нескольких представлений.
- Создайте модуль с именем
mainApp
и загрузитеngRoute
как зависимый модуль. - Настройте маршруты с помощью
$routeProvider
. - В примере мы используем два пути: /home и /viewStudents.
- В этом примере мы используем только один контроллер,
StudentController
StudentController
инициализируется массивом учащихся и сообщением. Мы будем показывать это сообщение на главной странице, а список учащихся — на странице viewStudents.- Сохраните этот файл как
main.js
main.js
var mainApp = angular.module("mainApp", ['ngRoute']);
mainApp.config(function($routeProvider) {
$routeProvider
.when('/home', {
templateUrl: 'home.html',
controller: 'StudentController'
})
.when('/viewStudents', {
templateUrl: 'viewStudents.html',
controller: 'StudentController'
})
.otherwise({
redirectTo: '/home'
});
});
mainApp.controller('StudentController', function($scope) {
$scope.students = [
{name: 'Mark Waugh', city:'New York'},
{name: 'Steve Jonathan', city:'London'},
{name: 'John Marcus', city:'Paris'}
];
$scope.message = "Click on the hyper link to view the students list.";
});
Например, если URL имеет вид https://www.journaldev.com/index.html#/home, часть URL после # соответствует /home
, будет загружен home. html
, и если он соответствует /viewStudents
, он загрузит viewStudents.html
на страницу оболочки. Если ничего не совпадает, то оно будет изменено, и страница будет перенаправлена на home.html
. Теперь мы можем создавать представления и сохранять их как файлы home.html
и viewStudents.html
. home.html
<div class="container">
<h2> Welcome </h2>
<p>{{message}}</p>
<a href="#/viewStudents"> View Students List</a>
</div>
Это стандартная страница нашего приложения. В этом представлении мы просто распечатываем сообщение, которое мы уже инициализировали в StudentController. Вы также можете увидеть ссылку на страницу viewStudents
. viewStudents.html
<div class="container">
<h2> View Students </h2>
Search:
<br/>
<input type="text" ng-model="name" />
<br/>
<ul>
<li ng-repeat="student in students | filter:name">{{student.name}} , {{student.city}}</li>
</ul>
<a href="#/home"> Back</a>
</div>
В приведенном выше представлении вы можете увидеть список студентов с возможностью поиска. Наконец, выполните следующие шаги, чтобы завершить пример приложения маршрутизации AngularJS.
ng-app
автоматически загружает наше приложение mainApp Директива ngView
является заполнителем представлений -home.html
иviewStudents.html
- Включить
angular.min.js
иangular-route.min.js
- Включите
main.js
, который мы создали на предыдущих шагах. - Сохраните файл как
index.html
index.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>AngularJS Routing</title>
</head>
<body>
<div ng-app="mainApp">
<ng-view></ng-view>
</div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.28/angular.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.28//angular-route.min.js"></script>
<script type="text/javascript" src="main.js"></script>
</body>
</html>
Это все для нашего примера маршрутизации AngularJS. Наше приложение готово к запуску.
Запустите ваше приложение
- Сохраните все файлы в одном каталоге.
- откройте
index.html
в браузере - Попробуйте нашу онлайн-демонстрацию.