AngularJs之angular-ui-router
AngularJS中提供ngRoute路由模块实现路由切换,在1.2+后的版本独立出来angular-router.js,但是在遇到路由深层次嵌套的情况下,该模块就力不从心,这时就需要angular-ui-router登场。
1. 目录结构

app文件夹为项目资源主文件夹plugin为引入的框架和库文件夹templates为各模板的文件夹index.html项目启动主页app.js为项目启动js文件
2. 主页index.html
1 |
|
这里定义了一个angularjs应用ng-app="routerApp",定义了两个路由ui-sref="home"、ui-sref="about",<div ui-view=""></div>为路由显示容器。
3. 第一种方式路由home页home.html
1 | <div class="jumbotron text-center"> |
这里定义了两个二级路由ui-sref=".list"、ui-sref=".paragraph",<div ui-view></div>为路由显示容器。
4. 二级路由.list页home-list.html
1 | <ul> |
5. 第二种方式路由视图about页about.html
1 | <div class="jumbotron text-center"> |
这里定义了两个视图块ui-view="columnOne"、ui-view="columnTwo",来显示不同的模板。
6. 二级路由视图columnTwo@about页table-data.html
1 | <h2>Ice-Creams</h2> |
7. 设置app.js,定义angualrjs模块,路由状态管理,控制器
1 | var routerApp = angular.module('routerApp', ['ui.router']); |
在angularjs主模块注入ui.router依赖,在模块配置中配置$stateProvider、$urlRouterProvider用于状态管理和url管理的服务,当没有路由匹配时执行$urlRouterProvider.otherwise('/home');,在state()方法第一个参数用.表示二级路由;当涉及多个ui-view时使用childName@parentName子视图名+@+父级路由名方式定义视图。再配合angular-animate可以实现丰富的切换效果和复杂的路由效果。