AngularJS ui-router (嵌套路由)的简单学习

今天让我们一起来学习一下AngularJS里的嵌套路由。

  ui-router和同属AngularJS框架一部分的ng-route一样强大. ui-router提供了让我们可以做路由嵌套和视图命名的特性,嵌套路由功能主要是依赖$stateProvider服务,$urlRouterProvider服务与 ui-view实现。.

 首先我们先使用AngularJS框架来创建简单的html和JavaScript页面。

 

 我们需要创建的文件有一下这些:

    1.先创建主体页面    main.html

  2.嵌套路由页面       page.html

  3.在创建三个子页面    page1.html 、 page1.html   、   page1.html

   注意:在使用这个方法时,记得要引入angular-ui-route.js插件哦!

  main.html

   创建页面如下:

<!DOCTYPE html>
<html ng-app="mk">
<head>
    <title></title>
    <script src="libs/angular.min.js"></script>
    <script src="libs/angular-ui-route.js"></script>
    <script>
        var app = angular.module("mk", [‘ui.router‘]);
//        依赖$stateProvider服务与$urlRouterProvider服务
        app.config(function ($stateProvider, $urlRouterProvider) {

        });
    </script>

</head>
<body data-ng-app="myApp">
<h1>路由嵌套的主体页-----AngularJS Home Page (Ui-router)</h1>
<div ui-view=""></div>//必填
</body>
<html>

Page.html

创建页面如下:

<div>
    <span style="padding-right: 20px" ><a href="javascript:;">Page-1</a></span>
    <span style="padding-right: 20px" ><a href="javascript:;">Page-2</a></span>
    <span style="padding-right: 20px" ><a href="javascript:;">Page-3</a></span>
</div>

Page1.html

创建页面如下:

<!--子页面1-->
<div>
    <div>
        <h1>Page  子页面1</h1>
    </div>
</div>

Page2.html

创建页面如下:

<!--子页面2-->
<div>
    <div>
        <h1>Page 子页面2</h1>
    </div>
</div>

Page3.html

创建页面如下:

<!--子页面3-->
<div>
    <div>
        <h1>Page  子页面3</h1>
    </div>
</div>

以上还是个开始,主体页面main.html还没有嵌套page.html页面,接下来先把page.html页面嵌套在其中吧。

  此时main.html

   创建页面如下:(红色部分为新加内容)

<!DOCTYPE html>
<html ng-app="mk">
<head>
    <title></title>
<style>    body{        background: #cc9900;    }</style>
    <script src="libs/angular.min.js"></script>
    <script src="libs/angular-ui-route.js"></script>
    <script>
        var app = angular.module("mk", [‘ui.router‘]);
//        依赖$stateProvider服务与$urlRouterProvider服务
        app.config(function ($stateProvider, $urlRouterProvider) {

            $urlRouterProvider.when("", "/Page");
 //这一行定义了会在main.html页面第一个显示出来的状态,作为页面被加载好以后第一个被使用的路由.
            $stateProvider
                    .state("Page", {
                        url: "/Page",
                        templateUrl: "Page.html"
                    })

        });
    </script>

</head>
<body data-ng-app="myApp">
<h1>路由嵌套的主体页-----AngularJS Home Page (Ui-router)</h1>
<div ui-view=""></div>
</body>
<html>

效果图:(现在的链接还未添加内容)

接下来完善一下Page.html

创建页面如下:

<div>
    <span style="padding-right: 20px" ui-sref=".Page1"><a href="javascript:;">Page-1</a></span>
    <span style="padding-right: 20px" ui-sref=".Page2"><a href="javascript:;">Page-2</a></span>
    <span style="padding-right: 20px" ui-sref=".Page3"><a href="javascript:;">Page-3</a></span>
</div>
<div ui-view=""/></div>

最后我们把main.html修改完整,让在 Page-1 或者 Page-2 再或者 Page-3 菜单上点击的时候需要页面在占位标记那里显示出来。

【完整的main.html

<!DOCTYPE html>
<html ng-app="mk">
<head>
    <title></title>
    <script src="libs/angular.min.js"></script>
    <script src="libs/angular-ui-route.js"></script>
    <script>
        var app = angular.module("mk", [‘ui.router‘]);
//        依赖$stateProvider服务与$urlRouterProvider服务
        app.config(function ($stateProvider, $urlRouterProvider) {

            $urlRouterProvider.when("", "/Page");
            $stateProvider
                    .state("Page", {
                        url: "/Page",
                        templateUrl: "Page.html"
                    })
                  //  Page下的page1
                    .state("Page.Page1", {
                        url:"/Page1",
                        templateUrl: "Page1.html"
                    })
                    .state("Page.Page2", {
                        url:"/Page2",
                        templateUrl: "Page2.html"
                    })
                    .state("Page.Page3", {
                        url:"/Page3",
                        templateUrl: "Page3.html"
                    });
        });
    </script>

</head>
<body data-ng-app="myApp">
<h1>路由嵌套的主体页-----AngularJS Home Page (Ui-router)</h1>
<div ui-view=""></div>
</body>
<html>

好了,AngularJS里的嵌套路由到现在就全部实现了,你们快点在自己的本上运行一下吧!

时间: 2024-10-14 08:07:11

AngularJS ui-router (嵌套路由)的简单学习的相关文章

六、Vue Router 嵌套路由

嵌套路由 在入口模板中设置的<router-view>是最顶层的出口.子组件中可以嵌套<router-view>为子路由匹配的出口. const User = { template: ` <div class="user"> <h2>User {{ $route.params.id }}</h2> <router-view></router-view> </div> ` } 要在嵌套的出口中

Angularjs ui router,路由嵌套 父controller执行问题

路由路径设置:structured.text   :structured是第一层路由,text是第二层路由: 问题如下,当$state.transitionTo路由到第二层是,structured的controller也会执行一次,导致页面控件重新加载刷新. $state.transitionTo( "structured.text", { args : $stateParams }, { reload: false} ); 查了github看到 https://github.com/

ngRoute 和 ui.router 的使用方法和区别

在单页面应用中要把各个分散的视图给组织起来是通过路由机制来实现的.本文主要对 AngularJS 原生的 ngRoute 路由模块和第三方路由模块 ui.router 的用法进行简单介绍,并做一个对比. ngRoute 使用方法 1) 引入 angular-route lib 无论是 ngRoute 还是 ui.router ,作为框架额外的附加功能,都必须以 模块依赖 的形式被引入. 1 <script src="lib/angular-route.js"></sc

[转]AngularJS 使用 UI Router 实现表单向导

本文转自:http://www.oschina.net/translate/angularjs-multi-step-form-using-ui-router 今天我们将使用AngularJs和伟大的UI Router以及Angular ngAnimate module创建一个带动画的多步表单.这项技术可以用在你想要简化用户操作的大表单上. 我们看到这项技术已经应用在了许多的网页上.比如购物车,注册表单,入职流程以及许多多步表单,让用户更容易在线填写表单. 下面我们将构建它: 使用UI Rout

Angularjs中UI Router全攻略

摘自:Angularjs中UI Router全攻略 温馨提示:想要了解 angular-ui-router的同学,从上往下读一遍,能带随着coding那就更好了,保证你对angular-ui-router基本全部掌握. 如何引用依赖angular-ui-router angular.module('app',["ui.router"]) .config(function($stateProvider){ $stateProvider.state(stateName, stateCofi

AngularJS ui-router (嵌套路由)

介绍 AngularJS 嵌套路由:这是我针对同一个主题(ui-router)的第二篇文章. 如果你对第一篇文章感兴趣的话,可以访问 这里. 好了,让我们继续吧,来看看嵌套的ui-router状态是怎么回事. ui-router和同属AngularJS框架一部分的ng-route一样强大. ui-router提供了让我们可以做路由嵌套和视图命名的特性. 我们将在示例中看到ui-router中存在的所有类型. 背景 引述我之前那篇文章开头给出的使用ui-router框架实现的简单路由, 基于我们的

Angularjs中UI Router用法小记录

今天自己参考已有的项目代码学习了下UI Router的用法,写了个小demo,验证了下自己的想法,现把使用情况记录一下. 1.入口文件index.html,引入项目所需的js文件,标注ng-app,创建ui-view元素,为后面的嵌套做容器准备. <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <meta charset="UTF-8">

React Router 4.0 ---- 嵌套路由和动态路由

嵌套路由,从广义上来说,分为两种情况:一种是每个路由到的组件都有共有的内容,这时把共有的内容抽离成一个组件,变化的内容也是一个组件,两种组件组合嵌套,形成一个新的组件.另一种是子路由,路由到的组件内部还有路由. 对于共有的内容,典型的代表就是网页的侧边栏,假设侧边栏在左边,我们点击其中的按钮时,右侧的内容会变化,但不管右侧的内容怎么变化,左侧的侧边栏始终存在.这个侧边栏就是共有内容,如下图所示 这个共有内容要怎么处理? 首先想到的就是把这个功能提取出来,写成一个组件,然后再把这个组件依次应用到其

走进AngularJs(八) ng的路由机制

在谈路由机制前有必要先提一下现在比较流行的单页面应用,就是所谓的single page APP.为了实现无刷新的视图切换,我们通常会用ajax请求从后台取数据,然后套上HTML模板渲染在页面上,然而ajax的一个致命缺点就是导致浏览器后退按钮失效,尽管我们可以在页面上放一个大大的返回按钮,让用户点击返回来导航,但总是无法避免用户习惯性的点后退.解决此问题的一个方法是使用hash,监听hashchange事件来进行视图切换,另一个方法是用HTML5的history API,通过pushState(