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

下面我将详细讲解“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日

相关文章

  • 基于HTML5+tracking.js实现刷脸支付功能

    实现刷脸支付功能需要使用到HTML5和tracking.js两个技术。下面是具体的实现流程: 步骤一:准备工作 首先要安装tracking.js,可以使用npm或者直接在网页中引用tracking.min.js文件。 接下来需要用到摄像头,所以需要先获取用户的摄像头权限。在HTML5中,可以使用navigator.mediaDevices.getUserMe…

    JavaScript 2023年6月11日
    00
  • 简易的JS计算器实现代码

    下面是关于“简易的JS计算器实现代码”的完整攻略: 一、准备工作 要实现一个简易的JS计算器,首先需要在HTML文件中创建计算器的界面,其中需要包括如下组件: 计算器界面:使用HTML的div元素模拟。 显示框:显示计算结果。 操作按钮:包括加、减、乘、除等常见计算操作,使用HTML的button元素模拟。 在创建好计算器的界面后,需要在JS文件中获取各个操…

    JavaScript 2023年5月27日
    00
  • jdk1.8+vue elementui实现多级菜单功能

    下面我将详细讲解“jdk1.8+vue elementui 实现多级菜单功能”的攻略。 一、准备工作 首先需要安装jdk1.8及以上版本和vue-cli的脚手架工具,具体可以参考相关官方文档。 然后需要在vue项目中安装element-ui组件库,可以使用npm命令进行安装,示例代码如下: npm install element-ui –save 在mai…

    JavaScript 2023年6月10日
    00
  • JavaScript实现鼠标移动粒子跟随效果

    下面是讲解“JavaScript实现鼠标移动粒子跟随效果”的完整攻略。 确定目标 首先我们需要明确我们的目标:实现鼠标移动时页面上的粒子跟随鼠标移动。这种效果会增加页面的趣味性和互动性,让用户更有参与感。 分析思路 实现鼠标移动粒子跟随效果,需要做以下几个步骤: 创建画布和粒子; 监听鼠标移动事件; 计算鼠标和粒子之间的距离和角度; 将粒子移动到鼠标所在位置…

    JavaScript 2023年6月11日
    00
  • 史上最详细的js日期正则表达式分享

    下面我将详细讲解如何使用“史上最详细的js日期正则表达式分享”这篇文章来掌握JS日期正则表达式的应用技巧。 1. 文章介绍 这篇文章主要介绍了JS日期正则表达式的应用,包括日期格式的匹配、日期校验等。文章详细介绍了多种常见的日期格式,以及对应的正则表达式。此外,文章还给出了各类日期格式的示例和代码,方便读者理解掌握。 2. 示例说明 下面我将给出两个使用该文…

    JavaScript 2023年5月27日
    00
  • js获取ajax返回值代码

    接下来我将详细讲解JS获取AJAX返回值的完整攻略。 准备工作 在使用JS获取AJAX返回值之前,需要先引入jQuery库,因为AJAX主要是使用jQuery库的ajax方法来实现的。在头部引入jQuery库的代码如下: <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/j…

    JavaScript 2023年6月11日
    00
  • JavaScript中的模拟事件和自定义事件实例分析

    让我为您详细讲解“JavaScript中的模拟事件和自定义事件实例分析”的完整攻略。 什么是模拟事件? 模拟事件是指在JavaScript中指定对元素执行的事件,并手动触发该事件的操作。模拟事件非常有用,可以用于测试或模拟用户交互。 在JavaScript中,可以使用new Event()、new MouseEvent()等构造函数,来创建事件对象。可以使用…

    JavaScript 2023年6月10日
    00
  • Javascript数组的 forEach 方法详细介绍

    下面我将为您详细讲解“Javascript数组的 forEach 方法详细介绍”的完整攻略。 什么是 JavaScript 数组的 forEach 方法? JavaScript 中的数组是一组含有相同类型的数据的集合。forEach() 是 JavaScript 中内置的数组方法,可以帮助我们遍历数组并对每个元素执行一个特定的操作,例如修改、删除或输出数组元…

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