angular的路由跳转,的监听$rootScope.$on
使用angular来做项目时,习惯性的使用第三方路由插件ui-router配置路由。每一个状态都对应着一个页面,
因此对路由状态改变的监听也变的十分重要。
可以使用:$rootScope.$on(…….)监听
$stateChangeStart: 表示状态切换开始
$stateNoFound:没有发现
$stateChangeSuccess:切换成功
$stateChangeError:切换失败
回调函数的参数解释:
event:当前事件的信息
toState:目的路由状态
toParams:传到目的路由的参数
fromState:起始路由状态
经典例子:
我的项目中有两个模块,allIdea,myIdea,这两个模块都有一个编辑,因为这两个模块编辑功能完全一样,因此将其写为公共模块editCtrl…….
点击:allIdea的编辑,以及myIdea的编辑都会进入编辑模块
现在的问题是:在编辑模块刷新页面的时候,会丢失掉tab的状态信息(tab不会高亮,或者出现混淆的状况)
解决方案(不唯一)
使用$$rootScope.$on('$stateChangeStart....)监听状态的改变
eidtCtrl中(编辑模块的控制器中):
- $rootScope.$on('$stateChangeStart',function(event,toState,toParams,fromState,fromParams){
- //tab的状态的改变
- localStorage['from_idea']=fromState.name;//获得上一级路由,存储在localStorage中
- });
- localStorage['from_idea']=="home.ideas.myIdeas"?$rootScope.eval = 'myIdeas':$rootScope.eval='allIdeas';
- //home.ideas.myIdea是myIdea页面对应的状态,如果localStorage['from_idea']等于home.ideas.myIdeas,则myIdeas高亮,否则allIdeas高亮
html:页面
- <div class="ideas-list">
- <div class="my-row">
- <div class="amdin-nav" >
- <ul class="list-inline adminAction-listHeader">
- <li ui-sref="home.ideas.allIdeas" class="hand">
- <div ng-class="{active:eval=='allIdeas'}" class="my-btn-lg" ng-show="can_see_all_idea">全部创意</div>
- </li>
- <li ui-sref="home.ideas.myIdeas" class="hand" >
- <div class="my-btn-lg" ng-class="{active:eval=='myIdeas'}" >我的创意</div>
- </li>
- <li ui-sref="home.ideas.appr_list" class="hand" >
- <div class="my-btn-lg" ng-class="{active:eval=='waitList'}">待审批</div>
- </li>
- <li ui-sref="home.ideas.approval" class="hand" >
- <div class="my-btn-lg" ng-class="{active:eval=='hasApproval'}" >已审批</div>
- </li>
- </ul>
- </div>
- <div class=" list-content" ui-view="part" >
- </div>
- </div>
- </div>
angular的路由跳转,的监听$rootScope.$on的更多相关文章
- angular中路由跳转并传值四种方式
一.路由传值 步骤1 路由传递参数 注意 一定是要传递 索引值 let key = index 这种情况是在浏览器中可以显示对应的参数 这种的是问号 localhost:8080/news?id=2& ...
- Angular和Ionic的路由跳转
一.Angular和Ionic的路由跳转 Angular的路由跳转: constructor(private router:Router){ } .... this.router.navigat ...
- next路由跳转监听
next的路由跳转监听事件 { “routeChangeStart”, "beforeHisroryChange" "routeChangeComplete", ...
- angularjs -- 路由监听
前几天,项目在做一个功能时需要在页面切换之前关闭正在执行的函数.尝试了几种方式都不行,最后想到既然angularjs是通过理由切换页面,那就在路由上面做文章吧.AngularJS在路由发生改变时,可以 ...
- Angular配置路由以及动态路由取值传值跳转
Angular配置路由 1.找到 app-routing.module.ts 配置路由 引入组件 import { HomeComponent } from './home/home.componen ...
- vue --》路由query 编程式导航传值与监听
1.首先在一个页面设置一个按钮,用于路由跳转 <template> <div> <button @click="handleToRouter"> ...
- Angular:路由的配置、传参以及跳转
①路由的配置 1.首先用脚手架新建一个项目,在路由配置时选择yes 2.用ng g component创建组件 3.在src/app/app-routing.module.ts中配置路由 import ...
- vue路由钩子拦截器beforeEach和afterEach及页面路由变化路由监听
在路由跳转的时候,我们需要一些权限判断或者其他操作.这个时候就需要使用路由的钩子函数. 定义:路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的函数. 总体来讲vue里面提供了三大类钩子 ...
- JS高级学习笔记(9) 之 转:前端路由跳转基本原理
原文链接: 前端路由跳转基本原理 前述 前端三大框架Angular.React和Vue都推行单页面应用SPA开发模式,这是因为在路由切换时,替换DOM Tree中发生修改的DOM部分,来减少原来因为多 ...
随机推荐
- ORM--------Hibernate、Mybatis与Spring Data的区别
1.概念: Hibernate :Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.着力点对象 ...
- ASP.NET MVC 路由系统类
RouteData public class RouteData { private RouteValueDictionary _dataTokens; private IRouteHandler _ ...
- 剑指offer--46.字符流中第一个不重复的字符
双端队列 -------------------------------------------------------- 时间限制:1秒 空间限制:32768K 热度指数:113070 本题知识点: ...
- 【PL/SQL编程】条件语句
1. if...then语句 if <condition_expression> then plsql_sentence; end if; declare -- Local variabl ...
- Android 开发 Tip 17 -- 为什么getBackground().setAlpha(); 会影响别的控件?
转载请注明出处:http://blog.csdn.net/crazy1235/article/details/75670018 http://www.jb51.net/article/110035.h ...
- 关于windows完成端口(IOCP)的一些理解
本人很多年前接触完成端口以来,期间学习和练习了很多次,本以为自己真正地理解了其原理,最近在看网狐的服务器端源码时又再一次拾起完成端口的知识,结果发现以前理解的其实很多偏差,有些理解的甚至都是错误的.网 ...
- Android 编程 AMapLocationClientOption 类中的 setNeedAddress 方法用处 (高德地图 com.amap.api.location.AMapLocationClientOption 中的类)
最近在用高德地图来写Android App, 其中有一些 方法是不太理解的,这里写一下 对 高德地图 com.amap.api.location.AMapLocationClientOption ...
- Ubuntu网络代理问题
问题描述 新开机的电脑,不开lantern就上不了网.很气. 解决过程 首先当然是寻求解决方案了.未果 然后就是妥协,每次先开一次lantern.(其实也不是很麻烦是吧,哎,是的是的) 今天早晨友人来 ...
- 【剑指offer15】二进制中1的个数(位运算),C++实现
原创博文,转载请注明出处! # 本文是牛客网<剑指offer>刷题笔记 1.题目 # 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示.例如,把9表示成二进制是1001,有两 ...
- laravel 中禁用掉注册功能
想让 laravel 做单用户登录,禁止掉注册功能 在 RegisterController 添加以下方法 public function showRegistrationForm() { retur ...