AngularJS路由示例 – ngRoute,$routeProvider
今天我们将使用ngRoute模块和$routeProvider来探讨AngularJS路由示例。之前我们已经学习了AngularJS模块和AngularJS控制器。
AngularJS中的路由
在AngularJS中进行路由是其中一个核心功能。在这个AngularJS路由示例中,我们将构建一个带有多个视图的小型单页应用程序,以展示AngularJS中路由的工作原理。
ngRoute 路由约定
AngularJS的ngRoute模块为angular应用程序提供路由和深度链接服务以及指令。我们需要从AngularJS官方网站下载包含ngRoute模块的angular-route.js脚本来使用路由功能。您也可以在应用程序中使用CDN来包含此文件。在本教程中,我们将使用谷歌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是AngularJS框架中的一个指令。
ngView指令用于在指定路由中显示HTML模板或视图。每当当前路由发生变化时,根据$route服务的配置,包含的视图也会随之改变。
$routeProvider的中文本地化改写如下:路由提供器
$routeProvider 用于配置路由。我们使用 ngRoute config() 来配置 $routeProvider。config() 接受一个函数作为参数,该函数接受 $routeProvider 作为参数,并将路由配置放在函数内部。$routeProvider 有一个简单的 API,可以接受 when() 或 otherwise() 方法。
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中`#`符号后的一部分。路由包含两个属性-`templateUrl`和`controller`。`templateUrl`属性定义了AngularJS应该加载和显示在具有`ngView`指令的`div`内部的HTML模板。`controller`属性定义了应该与HTML模板一起使用的控制器。当应用程序加载时,路径与URL中`#`符号后的部分进行匹配。如果没有与给定URL匹配的路由路径,浏览器将被重定向到`otherwise()`函数中指定的路径。
AngularJS 路由示例
现在让我们通过一个简单的示例来理解AngularJS的路由。首先,我们将定义一个模块,一些路由,创建控制器并创建多个视图。最后,我们将创建应用程序的外壳页面,以容纳多个视图。
-
- 创建一个名为mainApp的模块,并将ngRoute作为一个依赖模块加载。
-
- 使用$routeProvider配置路由。
-
- 在示例中,我们使用了两个路径,/home和/viewStudents。
-
- 在这个示例中,我们只使用了一个控制器,StudentController。
-
- StudentController被初始化为一个学生数组和一条消息。我们将在主页显示这条消息,在viewStudents页面显示学生列表。
- 将该文件保存为main.js。
主要的.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.scdev.com/index.html#/home的格式,#后面的URL部分匹配/home,则加载home.html页面;如果匹配/viewStudents,则加载viewStudents.html页面到主页页面中。如果没有匹配项,则会进入其他条件并将页面重定向到home.html。现在我们可以创建并保存我们的视图文件为home.html和viewStudents.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 auto-bootstraps our application mainApp
- ngView directive is the placeholder of the views – home.html and viewStudents.html
- Include angular.min.js and angular-route.min.js
- Include main.js which we have created in the earlier steps.
- Save the file as index.html
主页.html (zhǔ yè. 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路由示例就到这里。我们的应用程序已经准备好运行了。
运行你的应用程序
- Save all the files in the same directory.
- open index.html from your browser
- Try our online demo.