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日

相关文章

  • javascript基础知识整理

    JavaScript 基础知识整理 简介 JavaScript 是一种轻量级的脚本语言,用于为网站添加交互性和响应式。它被广泛用于前端开发、后端开发以及移动应用程序开发。 本篇文章将对 JavaScript 的基础知识进行整理,希望可以让初学者快速掌握 JavaScript 的核心概念。 数据类型 JavaScript 中有七种基本数据类型:undefine…

    JavaScript 2023年5月27日
    00
  • 深入理解JavaScript高级之词法作用域和作用域链

    深入理解JavaScript高级之词法作用域和作用域链 什么是词法作用域 词法作用域是指JavaScript代码的作用域是基于源代码中变量和函数声明的位置来确定的,而不是基于运行时的调用栈。换言之,词法作用域与代码的声明位置有关。 例如,下面的代码示例中,bar函数在foo函数内部定义,因此它的作用域(也称为“词法环境”)包含了foo函数范围内的变量,即x变…

    JavaScript 2023年5月27日
    00
  • JS生成随机字符串的多种方法

    JS生成随机字符串的多种方法 在JS中,生成随机字符串是常见的需求。我们可以使用多种方法来实现这个需求,下面介绍几种常见的方法。 使用Math.random()方法生成随机字符串 Math.random()方法返回一个0到1之间的随机数。我们可以使用这个方法将结果转换成字符串,然后截取字符串来生成随机字符串。 其中,Math.random()方法返回的是一个…

    JavaScript 2023年5月28日
    00
  • JS实现图片切换效果

    下面我将详细讲解一下如何用JS实现图片切换效果。 前置知识 在开始之前,需要了解以下基础知识: HTML:了解HTML基本标签结构。 CSS:了解CSS基本样式和选择器。 DOM:了解DOM操作和事件的绑定。 JavaScript:了解JavaScript基本语法和常用方法。 如果您还不熟悉以上内容,建议先学习一下再来尝试。 实现步骤 接下来,我们将分步骤地…

    JavaScript 2023年6月11日
    00
  • 刷新页面后让控制台的js代码继续执行

    要让控制台的JS代码在页面刷新后继续执行,可以使用以下两种方法: 1. 使用localStorage 将需要在刷新后继续执行的JS代码保存到localStorage中,然后在页面加载时读取localStorage中的代码并执行。 // 存储代码 localStorage.setItem(‘myCode’, ‘console.log("Hello W…

    JavaScript 2023年6月11日
    00
  • vue使用axios实现excel文件下载的功能

    下面是使用Vue和Axios实现Excel文件下载的攻略,过程中将会包含两条示例说明。 准备工作 安装依赖:npm install –save axios file-saver xlsx 其中,axios 是我们将用来与后端交互的网络请求库;file-saver 是将文件保存到本地的库;xlsx 将Excel文件转换为二进制格式。 在 main.js 中导…

    JavaScript 2023年6月11日
    00
  • Javascript实现视频轮播在pc端与移动端均可

    下面是“Javascript实现视频轮播在pc端与移动端均可”的完整攻略。 1. 视频轮播的基本概念 首先,我们需要了解什么是视频轮播。视频轮播是指一段视频或多段视频在一定时间内自动播放,一般会在网站的首页或特定页面上展示。在PC端视频轮播多为横向滚动轮播,而在移动端多为纵向滚动轮播。 2. 实现视频轮播的基本方法 主要通过监听轮播事件、控制视频播放、实现自…

    JavaScript 2023年6月11日
    00
  • JavaScript分步实现一个出生日期的正则表达式

    JavaScript分步实现一个出生日期的正则表达式攻略包括以下步骤: 1. 确定正则表达式的格式 根据出生日期的格式,确定正则表达式的格式,例如中国大陆的格式通常为YYYY-MM-DD,美国通常为MM/DD/YYYY或者DD/MM/YYYY,可以针对不同的格式进行相应的正则表达式编写。例如,针对中国大陆的格式,我们可以编写如下正则表达式: ^\d{4}-(…

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