多重视图和路由
来源:互联网 发布:淘宝试用装是真的吗 编辑:程序博客网 时间:2024/05/19 16:05
多重视图和路由
1. 布局模板
要创建一个布局模板,需要修改HTML以告诉AngularJs将模板渲染到何处,通过将ng-view 指令和路由组合到一起,我们可以精确的指定当前路由所对应的模板在DOM中的渲染位置。
<header> <h1>header</h1></header><div class="content"> <div ng-view></div></div><footer> <h5>footer</h5></footer>
ng-view 是由ngRoute模块提供的一个特殊指令,它的独特作用是在HTML中给$route对应的视图内容更占位。
ng-view指令遵循以下规则:
每次触发$routeChangeSuccess事件,视图都会更新。
如果某个模板同当前路由相关联,则:
A. 创建一个新的作用域
B. 移除上一个视图,同时移除上一个作用域
C. 将新的作用域同当前模板关联在一起
D. 如果路由中有相关的定义,则把对应的控制器同当前作用域关联起来
E. 触发$viewContentLoad事件
F. 如果提供了onLoad属性,则调用该属性所指定的函数。
2. 路由
用when和otherwise两个方法来定义应用的路由。
angular.module("myApp",[]). config(['$routeProvider',function($routeProvider){ //在这里定义路由 $routeProvider.when('/',{ templateUrl:'views/home.html', controller:'HomeController' }) }]);
// 接受两个参数:第一个参数为路径(这个路径会与$location.path进行匹配)
第二个参数为配置对象(决定了当第一个参数中的路由能够匹配时具体做什么)
//配置对象中可进行设置的属性包括controller、template、templateURL、resolve、redirectTo和reloadOnSearch
一个复杂的路由方案:
angular.module("myApp",[]). config(['$routeProvider',function($routeProvider){ $routeProvider.when('/',{ templateUrl:'views/home.html', controller:'HomeController' }).when('/login',{ templateUrl:'views/login.html', controller:'LoginController' }).when('/dashboard',{ templateUrl:'views/dashboard.html', controller:'DashboardController', resolve:{ user:function(SessionService){ return SessionService.getCurrentUser(); } } }).otherwise( redirectTo: '/' ); }]);
3. $location服务
$location服务没有刷新整个页面的能力,若需刷新整个页面,则需使用$window.location对象。
location.path() //返回当前路径
location.path(“/home”).replace() //跳转之后不能返回
4. 路由模式
不同的路由模式在浏览器的地址栏中会以不同的URL格式呈现。
标签模式:
标签(hashbang)是AngularJs用来同你的应用内部进行链接的技巧。(若没有进行额外的指定,Angular将默认使用标签模式)
使用标签模式的URL看起来是这个样子的:
http://yoursite.com/#!/inbox/all
angular.module("myApp",[]). config(['$locationProvider',function($locationProvider){ //显示指定配置并使用标签模式 $locationProvider.html5Mode(false); $locationProvider.hashPrefix('!'); }]);
HTML5模式:
使用HTML5模式的URL看起来是这个样子的:
http://yoursite.com/inbox/all
注意:当在HTML5模式下的angulaJS中写链接时,永远都不要使用相对路径。
5. 路由事件:
$route服务在路由过程中的每个阶段都会触发不同的事件,可以为这些不同的路由事件设置监听器并作出响应。
A. $routeChangeStart
angularJS在路由变化之前都会传播$routeChangeStart事件(在这一步中,路由服务会开始加载路由变化所需要的所有依赖)
B. $routeChangeSuccess
C. AngularJS会在路由的依赖被加载后传播$routeChangeSuccess
angular.module('myApp',[]).run(['$rootScope','$location',function($rootScope,$location){ $rootScope.$on('$routeChangeSuccess',function(evt,next,previous){ //接收三个参数:原始的angularJS的evt对象;用户当前所处的路由;上一个路由 });}]);
- 多重视图和路由
- AngularJs多重视图和路由的使用
- AngularJs多重视图和路由的使用
- AngularJs多重视图和路由的使用
- angularjs 多重视图与路由
- AngularJS:router路由与多重视图详解
- AngularJs:router路由与多重视图详解
- 跟我学AngularJs:router路由与多重视图详解
- AngularJS 路由和多视图
- 路由控制和视图转换框架 SPA
- AngularJS 路由和多视图 之 hashchange
- django系列3:视图和路由
- AngularJS 路由和多视图2
- AngularJS 路由和多视图3
- Flask的路由和视图函数
- vue-router -- 命名路由和命名视图
- Django(二) 路由和视图
- ionic多重路由
- 宁愿去陌生人那里,也不照顾熟人的生意,理由竟然是这样的?
- JS中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
- 线性表14 – 数据结构和算法19
- Pycharm 快捷键
- 项目4--利用遍历思想求解图问题
- 多重视图和路由
- 事件处理
- 线性表15|魔术师发牌问题和拉丁方阵 – 数据结构和算法20
- Linux的cat命令使用
- JDBC Statement
- Java EE 设计模式解析与应用——互动出版网
- cors与Nginx
- 第十一周项目--【二叉树的层次遍历算法】
- excel数据批量导出为sql脚本