AngularJS路由系列(6)-- UI-Router的嵌套State

本系列探寻AngularJS的路由机制,在WebStorm下开发。本篇主要涉及UI-Route的嵌套State。

假设一个主视图上有两个部分视图,部分视图1和部分视图2,主视图对应着一个state,两个部分视图分别对应state1和state2,那state与state1和state2形成了嵌套关系。

AngularJS路由系列包括:

1、AngularJS路由系列(1)--基本路由配置
2、AngularJS路由系列(2)--刷新、查看路由,路由事件和URL格式,获取路由参数,路由的Resolve
3、AngularJS路由系列(3)-- UI-Router初体验
4、AngularJS路由系列(4)-- UI-Router的$state服务、路由事件、获取路由参数
5、AngularJS路由系列(5)-- UI-Router的路由约束、Resolve属性、路由附加数据、路由进入退出事件
6、AngularJS路由系列(6)-- UI-Router的嵌套State

文件结构

- index.html                   
- app.js                        
- partial-about.html           
- partial-home.html             
- partial-home-list.html        
- table-data.html               // 可复用的表格

● index.html

angular.js
angular-ui-router.min.js
app.js

<body ng-app="routerApp">
    <a ui-sref="#">AngularUI Router</a>
    <a ui-sref="home">Home</a>
    <a ui-sref="about">About</a>

    <!--第一级路由-->
    <div ui-view></div>
</body>

● app.js

var routerApp = angular.module(‘routerApp‘,[‘ui.router‘]);
routerApp.config(function($stateProvider, $uilRouterProvider){
   $urlRouterProvider.otherwise(‘/home‘) ;

   $stateProvider
        .state(‘home‘,{
            url: ‘/home‘,
            templateUrl:‘partial-home.html‘
        })
        .state(‘about‘,{

        })
});

● partial-home.html

The Homey Page
This page demonstrates nested vies.

● partial-home.html,添加2个按钮

The Homey Page
This page demonstrates nested vies.
<a ui-sref=".list">List</a>
<a ui-sref=".paragraph">Paragraph</a>

<!--第二级路由,嵌套在第一级路由中-->
<div ui-view></div>

● app.js,添加嵌套State

$urlRouterProvider.otherwise(‘/home‘) ;
$stateProvider
    .state(‘home‘, {
        url: ‘/home‘,
        templateUrl: ‘partial-home.html‘
    })

    // home.list符合惯例
    .state(‘home.list‘, {
        url: ‘/list‘,
        templateUrl: ‘partial-home-list.html‘,
        controller: function($scope) {
            $scope.dogs = [‘Bernese‘, ‘Husky‘, ‘Goldendoodle‘];
        }
    })

    // home.paragraph符合惯例
    .state(‘home.paragraph‘, {
        url: ‘/paragraph‘,
        template: ‘I could sure use a drink right now.‘
    })

● partial-home-list.html

<ul>
    <li ng-repeat="dog in dogs">{{ dog }}</li>
</ul>

● partial-about.html

The About Page
his page demonstrates multiple and named views

<!--第二级路由,嵌套在第一级路由中,但有各自的名称-->
<div ui-view="columnOne"></div>
<div ui-view="columnTwo"></div>

● app.js,添加嵌套state,一个state有多个ng-view

$urlRouterProvider.otherwise(‘/home‘) ;

$stateProvider
    .state(‘home‘, {
        url: ‘/home‘,
        templateUrl: ‘partial-home.html‘
    })

    // home.list符合惯例
    .state(‘home.list‘, {
        url: ‘/list‘,
        templateUrl: ‘partial-home-list.html‘,
        controller: function($scope) {
            $scope.dogs = [‘Bernese‘, ‘Husky‘, ‘Goldendoodle‘];
        }
    })

    // home.paragraph符合惯例
    .state(‘home.paragraph‘, {
        url: ‘/paragraph‘,
        template: ‘I could sure use a drink right now.‘
    })
    .state(‘about‘, {
            url: ‘/about‘,
            views: { //是指ng-view

                // 模板
                ‘‘: { templateUrl: ‘partial-about.html‘ },

                // 名称为columnOne的ng-view,[email protected]
                ‘[email protected]‘: { template: ‘Look I am a column!‘ },

                // 名称为columnTow的ng-view,[email protected]
                ‘[email protected]‘: {
                    templateUrl: ‘table-data.html‘,
                    controller: ‘SecondController‘
                }
            }

        });

    routerApp.controller(‘SecondController‘, function($scope) {

        $scope.message = ‘test‘;

        $scope.products = [
            {
                name: ‘Macallan 12‘,
                price: 50
            },
            {
                name: ‘Chivas Regal Royal Salute‘,
                price: 10000
            },
            {
                name: ‘Glenfiddich 1937‘,
                price: 20000
            }
        ];

    });        

● table-data.html

<h2>Fine Scotches</h2>

<table class="table table-hover table-striped table-bordered">
    <thead>
        <tr>
            <td>Name</td>
            <td>Cost</td>
        </tr>
    </thead>
    <tbody>

        <tr ng-repeat="product in products">
            <td>{{ product.name }}</td>
            <td>${{ product.price }}</td>
        </tr>

    </tbody>
</table>

AngularJS路由系列,结束?

时间: 2024-10-25 03:14:05

AngularJS路由系列(6)-- UI-Router的嵌套State的相关文章

AngularJS路由系列(5)-- UI-Router的路由约束、Resolve属性、路由附加数据、路由进入退出事件

本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● UI-Router约束路由参数● UI-Router的Resolve属性● UI-Router给路由附加数据● UI-Router的onEnter和onExit事件 AngularJS路由系列包括: 1.AngularJS路由系列(1)--基本路由配置2.AngularJS路由系列(2)--刷新.查看路由,路由事件和URL格式,获取路由参数,路由的Resolve3.AngularJS路由系列(3)-- UI-Rou

AngularJS路由系列(3)-- UI-Router初体验

本系列探寻AngularJS的路由机制,在WebStorm下开发. AngularJS路由系列包括: 1.AngularJS路由系列(1)--基本路由配置2.AngularJS路由系列(2)--刷新.查看路由,路由事件和URL格式,获取路由参数,路由的Resolve3.AngularJS路由系列(3)-- UI-Router初体验4.AngularJS路由系列(4)-- UI-Router的$state服务.路由事件.获取路由参数5.AngularJS路由系列(5)-- UI-Router的路由

AngularJS路由系列(2)--刷新、查看路由,路由事件和URL格式,获取路由参数,路由的Resolve

本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● 刷新路由● 查看当前路由以及所有路由● 路由触发事件● 获取路由参数 ● 路由的resolve属性● 路由URL格式 项目文件结构 node_modules/ public/.....app/..........bower_components/...............toastr/....................toastr.min.css....................toastr.min

AngularJS路由系列(1)--基本路由配置

本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● 路由的Big Picture ● $routeProvider配置路由 ● 使用template属性 ● 使用templateUrl属性 ● redirectTo属性,接受字符串 ● redirectTo属性,接受函数 ● 使用caseInsensitiveMatch属性,禁止大小写敏感 ● 使用otherwise属性 项目文件结构 node_modules/public/.....app/..........bo

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

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

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全攻略

摘自: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“多重路由”嵌套模块——AngularJS“路由”嵌套学习资料教程

这是小编的一些学习资料,理论上只是为了自己以后学习需要的,但是还是需要认真对待的 以下内容仅供参考,请慎重使用学习 1.AngularJS路由嵌套 Angularjs本身自带路由模块,可以满足通过不同的 URL 访问不同的内容,当然实际应用为在单页面点击不同按钮等加载不同页面 之前有关于angular-route路由的介绍,但是只能一层路由嵌套,如果需要多重嵌套就是不够用了 UI-Router作为AngularUI为开发者提供的其中实用的一个模块,根据URL状态组织和控制界面UI的渲染,不是仅仅

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">