AngularJS通过ng-route实现基本的路由功能实例详解

yizhihongxing

下面我将详细讲解“AngularJS通过ng-route实现基本的路由功能实例详解”的完整攻略。

1. 什么是AngularJS?

  • AngularJS是一种优秀的前端JavaScript框架;
  • 可以通过它快速构建Web应用;
  • 品牌背后的公司是Google。

2. 什么是ng-route?

  • AngularJS的ng-route是一种路由功能;
  • 可以用它来使得不同的URL对应于不同的客户端页面、视图和控制器(controller);
  • ng-route的核心服务是$routeProvider。

3. 实现基本的路由功能(示例1)

下面我们通过示例来实现基本的路由功能:

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <title>AngularJS</title>
</head>
<body>

<h1>Welcome to my website!</h1>

<div ng-controller="HomeController">
    <h2>{{title}}</h2>
    <p>{{description}}</p>
</div>

<div ng-controller="AboutController">
    <h2>{{title}}</h2>
    <p>{{description}}</p>
</div>

<!-- AngularJS -->
<script src="https://cdn.bootcss.com/angular.js/1.6.5/angular.js"></script>

<script>
    var app = angular.module("myApp", ['ngRoute']);

    app.config(function ($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'home.html',
                controller: 'HomeController'
            })
            .when('/about', {
                templateUrl: 'about.html',
                controller: 'AboutController'
            })
            .otherwise({
                redirectTo: '/'
            });
    });

    app.controller('HomeController', function ($scope) {
        $scope.title = 'Home Page';
        $scope.description = 'This is the home page.';
    });

    app.controller('AboutController', function ($scope) {
        $scope.title = 'About Page';
        $scope.description = 'This is the about page.';
    });

</script>

</body>
</html>

使用ng-route的最基本和主要的方式是使用$routeProvider来调用.when()方法。.when()的第二个参数为选项对象,它包含了templateURL(模板文件地址)和controller(控制器)属性。otherwise()方法指定了当用户试着通过打开不支持的、不存在于任何一个when表达式中,来访问网站时的默认重定向行为。

以上示例分别通过 / 和 /about 进行路由的切换,打开对应地址会显示Home Page和About Page对应的视图。

4. 多级嵌套路由(示例2)

当我们需要多级嵌套路由,我们可以使用ng-route的“嵌套路由”(nested routes)功能:

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <title>AngularJS</title>
</head>
<body>

<!-- navigation -->
<nav>
    <ul>
        <li><a href="#/">Home</a></li>
        <li><a href="#/about">About</a></li>
        <li><a href="#/contact">Contact</a></li>
    </ul>
</nav>

<div ng-view></div>

<!-- AngularJS -->
<script src="https://cdn.bootcss.com/angular.js/1.6.5/angular.js"></script>
<script src="https://cdn.bootcss.com/angular.js/1.6.5/angular-route.js"></script>

<script>

    var app = angular.module("myApp", ['ngRoute']);

    app.config(function ($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'home.html',
                controller: 'HomeController'
            })
            .when('/about', {
                templateUrl: 'about.html',
                controller: 'AboutController'
            })
            .when('/contact', {
                templateUrl: 'contact.html',
                controller: 'ContactController'
            })
            .when('/contact/:id', {
                templateUrl: 'contact-detail.html',
                controller: 'ContactDetailController'
            })
            .otherwise({
                redirectTo: '/'
            });
    });

    app.controller('HomeController', function ($scope) {
        $scope.title = 'Home Page';
        $scope.description = 'This is the home page.';
    });

    app.controller('AboutController', function ($scope) {
        $scope.title = 'About Us';
        $scope.description = 'This is the about page.';
    });

    app.controller('ContactController', function ($scope) {
        $scope.title = 'Contact Us';
        $scope.description = 'This is the contact page.';
        $scope.contacts = [
            {id: 1, name: 'John Doe', phone: '555-777-1212', email: 'john.doe@example.com'},
            {id: 2, name: 'Bob Smith', phone: '555-888-1212', email: 'bob.smith@example.com'},
            {id: 3, name: 'Jane Smith', phone: '555-888-1212', email: 'jane.smith@example.com'}
        ];
    });

    app.controller('ContactDetailController', function ($scope, $routeParams) {
        $scope.title = 'Contact Detail';
        $scope.description = 'This is the contact detail page.';
        var contacts = [
            {id: 1, name: 'John Doe', phone: '555-777-1212', email: 'john.doe@example.com'},
            {id: 2, name: 'Bob Smith', phone: '555-888-1212', email: 'bob.smith@example.com'},
            {id: 3, name: 'Jane Smith', phone: '555-888-1212', email: 'jane.smith@example.com'}
        ];
        $scope.contact = contacts.filter(function (obj) {
            return obj.id == $routeParams.id;
        })[0];
    });

</script>

</body>
</html>

以上示例中的 /contact/:id 路由会加载一个名为 "contact-detail.html" 的嵌套视图,并将其控制器作为参数传递给创建的模块中的$routeProvider.when()方法。

由于我们使用了动态URL参数(如 /contact/:id),因此我们需要使用AngularJS自带的$routeParams对象和$filter服务来过滤掉未选取的数据。

以上是详细讲解“AngularJS通过ng-route实现基本的路由功能实例详解”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:AngularJS通过ng-route实现基本的路由功能实例详解 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 浅析JavaScriptSerializer类的序列化与反序列化

    浅析JavaScriptSerializer类的序列化与反序列化 什么是JavaScriptSerializer类 JavaScriptSerializer类是一个.NET框架中的类,它是用于将对象序列化和反序列化为JSON格式的工具类。在Web应用程序中,它通常用于将服务器端的数据(比如查询数据库后查询出的结果集)转换为JSON格式,然后通过HTTP响应发…

    JavaScript 2023年5月27日
    00
  • JS实现的Object数组去重功能示例【数组成员为Object对象】

    下面是讲解“JS实现的Object数组去重功能示例【数组成员为Object对象】”的完整攻略。 一、背景介绍 在实际的开发过程中,我们经常会操作Object数组。而有时候,我们需要对一个Object数组进行去重操作,以避免出现重复数据。接下来,我们将会介绍针对这种情况下的JS实现的Object数组去重功能示例。 二、数组去重算法 去重算法是数组去重的核心,根…

    JavaScript 2023年5月27日
    00
  • 原生js轮播特效

    原生JS轮播特效是一种常见的网页设计效果,下面是一些实现的步骤和示例: 步骤 创建HTML布局 要实现轮播特效,需要一个包含轮播图片的容器和一组控制轮播的选择器。这个容器可以是一个div或ul元素。 设置CSS样式 设置容器和选择器的CSS样式,包括宽度,高度,颜色,字体大小和间距等。 编写JavaScript代码 3.1 获取容器和选择器元素的引用 3.2…

    JavaScript 2023年6月11日
    00
  • 12个提高JavaScript技能的概念(小结)

    下面我将详细讲解“12个提高JavaScript技能的概念(小结)”的完整攻略。 1. 箭头函数 箭头函数是 ES6 中的新语法,它可以让我们更方便、简洁地创建函数,而且还有一些特殊的作用域规则。箭头函数的语法示例如下: const sum = (a, b) => a + b; 在上面的示例中,我们定义了一个名为 sum 的箭头函数,它接受两个参数 a…

    JavaScript 2023年5月18日
    00
  • JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题

    闭包是一个有趣且常见的概念,在JavaScript中被广泛使用。可以使用闭包来解决JavaScript中的一些问题,比如变量作用域的限制和访问外部变量的限制。其中,一个重要的应用就是解决只能取得包含函数中任何变量最后一个值的问题。 什么是闭包 在JavaScript中,闭包是指能够访问自由变量的函数,即一个定义在函数内部的函数。闭包可以访问外部函数中的变量和…

    JavaScript 2023年6月10日
    00
  • JavaScript进阶之前端文件上传和下载示例详解

    JavaScript进阶之前端文件上传和下载示例详解 本文将详细讲解前端文件上传和下载的过程和实现方法,包括如何使用HTML5 FormData API、AJAX和原生JavaScript来完成文件上传和下载功能的开发。 文件上传 文件上传是我们日常开发中常用的功能之一。下面我们通过两个示例来讲解文件上传的实现。 示例1:上传图片并预览 HTML部分 &lt…

    JavaScript 2023年5月27日
    00
  • JavaScript如何生成二维数组

    生成二维数组的过程,实际上就是创建一个包含其他数组的数组。这个过程也可以称之为多维数组的创建。在 JavaScript 中,可以通过以下几种方法来生成二维数组: 方法一:使用双重循环创建二维数组 let rows = 5; let cols = 4; let arr = new Array(rows); for (let i = 0; i < rows…

    JavaScript 2023年5月28日
    00
  • 原生js验证简洁注册登录页面

    当我们需要开发一个简洁的注册登录页面时,JavaScript 可以用来验证用户输入的数据是否符合要求。以下是一些步骤来实现这个过程。 1. 获取表单数据 我们首先需要获取用户输入的数据,比如注册表单中的用户名、密码和电子邮箱。我们可以使用 document.getElementById 来获取表单中 input 标签的值。 示例 1:获取用户名 var us…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部