为什么用 Route
- AJAX 请求不会留下 History 记录
- 用户无法直接通过 URL 进入应用中的指定页面(保存书签、链接分享给朋友)
- AJAX 对 SEO 是个灾难
1 | var bookStoreApp = angular.module('bookStoreApp', [ |
嵌套 View (Nested Routing for AngularJS)
AngularUI-Router AngularUI
1 | <div ui-view></div> |
前端路由的基本原理
- 哈希 #
- HTML5 中新的 history API
- 路由的核心是给应用定义 “状态”
- 使用路由机制会影响到应用的整体编码方式(需预先定义好状态)
- 考虑兼容性问题与 “优雅降级”
Angular-UI-Router
ui-sref 指令链接到特定状态
1 | <a ui-sref="home">Home</a> |
$state.includes 返回 true
/ false
以上方法为查看当前状态是否在某父状态内,比如 $state.includes('contacts')
返回 true
/ false
1 | <li ng-class="{active: $state.includes('contacts')}"> |
ui-sref-active 查看当前激活状态并设置 Class
1 | <li ui-sref-active="active"><a ui-sref="about">About</a></li> |
包含模块
1 | angular.module('uiRouter', ['ui.router']); |
方便获得当前状态的方法,绑到根作用域
1 | app.run(['$rootScope', '$state', '$stateParams', |
路由重定向 $urlRouterProvider
1 | app.config(['$stateProvider', '$urlRouterProvider', |
状态配置
1 | $stateProvider. |
嵌套配置 Configure
JavaScript Codes
Parent Router
1 | $stateProvider. |
Children Router (Nested Router)
1 | $stateProvider |
HTML Codes
1 | <h2>All Contacts</h2> |