angularjs路由监听,uirouter感知路由变化,解决uirouter路由监听不生效的问题


风晓
风晓 2024-01-03 00:43:44 51859 赞同 0 反对 0
分类: 资源
angularjs路由监听,uirouter感知路由变化,解决uirouter路由监听不生效的问题

 

 壹 ❀ 引

angularjs除了惊为天人的双向数据绑定外,路由也是出彩的一笔,通过路由配置,我们能在不发起页面跳转的情况下,对当前页内容进行整体更新,angularjs提供了ngRoute模块用于路由配置,除此之外,angularUI也提供了uirouter模块用于解决路由问题,本文将从ngRoute与uirouter两个模块出发,分别介绍两者的路由监听方法。

 贰 ❀ ngRoute路由监听

ngRoute提供了路由事件用于监听路由过程中的每个阶段,可以为这些不同的路由事件设置监听器并在路由发生变化时做出响应。先上一个完整的例子,需要引入angularjs与angular-route.js:

 View Code
 View Code

 

1.$routeChangeStart

AngularJS在路由变化之前会执行$routeChangeStart事件。在这一步中,路由服务会开始加载路由变化所需要的所有依赖,并且模板和resolve中的promise也会被resolve。

复制代码
angular.module('myApp', [])
    .run(['$rootScope', '$location', function ($rootScope, $location) {
        $rootScope.$on('$routeChangeStart', function (evt, current, previous) {
            // do something
            // evt 原始的AngularJS evt对象
            // current 用户当前所处的路由
            // current 上一个路由(如果当前是第一个路由,则为undefined)。
        });
    }]);
复制代码

2. $routeChangeSuccess

AngularJS会在路由的依赖被加载后执行$routeChangeSuccess事件。

复制代码
angular.module('myApp', [])
    .run(['$rootScope', '$location', function ($rootScope, $location) {
        $rootScope.$on('$routeChangeSuccess', function (evt, current, previous) {
            // do something
            // evt 原始的AngularJS evt对象
            // current 用户当前所处的路由
            // previous 上一个路由(如果当前是第一个路由,则为undefined)。
        });
    }]);
复制代码

3. $routeChangeError

AngularJS会在任何一个promise被拒绝或者失败时执行$routeChangeError事件。
复制代码
angular.module('myApp', [])
    .run(function ($rootScope, $location) {
        $rootScope.$on('$routeChangeError', function (current, previous, rejection) {
            // do something
            // current 当前路由的信息
            // previous 上一个路由的信息
            // rejection 被拒绝的promise的错误信息
        });
    });
复制代码

4. $routeUpdate

AngularJS在reloadOnSearch属性被设置为false的情况下, 重新使用某个控制器的实例时,会执行$routeUpdate事件。

 叁 ❀ uirouter路由监听

uirouter是由angualrUI提供的三方路由模块,因此也需要额外下载,并在主模块中注入路由模块,需要引入angualrjs,angular-ui-router.js与stateEvents.js,先看一个完整的例子:

 View Code
 View Code

若$stateChangeStart之类的路由事件没触发,还是前面说的,得引入stateEvents.js文件,此文件在下载angular-ui-router.js时会同时包含。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  127
统信桌面专业版【全盘安装UOS系统】介绍  122
银河麒麟桌面操作系统安装佳能打印机驱动方法  114
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!