【问题标题】:Detect AngularJS routing via core Javascript通过核心 Javascript 检测 AngularJS 路由
【发布时间】:2023-03-16 12:57:02
【问题描述】:

在 Angular JS 应用程序中,我们可以使用 'ngRoute' 或 'ui-router' 进行路由。我创建了一个 javascript 函数来检测 AngularJS 应用程序中的路由更改。我曾经在下面为此编写代码。

window.onhashchange = function() { //code here }

但是,它只检测基于 '#'(哈希)的 url,例如:myurl.com/#home

如果在 AngularJS 中启用了“html5Mode”。上面的代码不起作用。请帮助我通过 Javascript 检测干净的 url。

【问题讨论】:

  • stackoverflow.com/questions/2073086/… 这两个答案都值得探索。
  • 你为什么要这么做?并且不使用路线/位置更改事件?
  • 我为 Angular js 创建了一个通用的 javascript 小部件,这就是我在这里问的原因。

标签: javascript angularjs


【解决方案1】:

向 Angular 注入监听器

angular.element(
   document.querySelector('.ng-scope')
).scope().$root.$on('$locationChangeStart', function(route, next, current){ 
   console.log(next, current);
});

找到第一个角度节点

  • document.querySelector('.ng-scope')

将其包装成 jqLit​​e 或 jQuery(如果存在)

  • angular.element()

获取dom的作用域,

  • .scope() //这可能已经是 $rootScope

从作用域中获取 $rootScope 以确保

  • $root

监听事件

  • .$on

这是 ngRoute 开始监听的地方

  • $locationChangeStart

使用路由对象和下一个 url 和当前 url 回调。

  • 函数(路由,下一个,当前){}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2017-03-02
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多