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的路由。首先,我们将定义一个模块,一些路由,创建控制器并创建多个视图。最后,我们将创建应用程序的外壳页面,以容纳多个视图。

    1. 创建一个名为mainApp的模块,并将ngRoute作为一个依赖模块加载。

 

    1. 使用$routeProvider配置路由。

 

    1. 在示例中,我们使用了两个路径,/home和/viewStudents。

 

    1. 在这个示例中,我们只使用了一个控制器,StudentController。

 

    1. 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.

AngularJS路由示例的在线演示

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds