首页 > 解决方案 > 如何找到导致非自愿路由的代码位?(在旧网站中)

问题描述

请帮助我,我正在重用一个基于 AngularJS 的旧网站,但我一直遇到由未知代码引起的意外路由事件。

当我按下网站上的各种元素时,这些元素都没有带有此类代码的明显事件处理程序,路由会按预期导致“页面未找到”页面。

我已经在“$location”和“$route”的所有引用周围放置了断点。我查看了代码中的所有“href”属性,没有发现任何可疑之处。

当我在 '$routeChangeStart' 钩子中放置一个断点时,如下所示

    $rootScope.$on('$routeChangeStart', function (event, next, current) {

    debugger;
    //.....
}

我有以下对象:

    next = { 
            params: {}
            pathParams: {} 
           } 

(没有 "$$route" )

event = {
   currentScope: m {$id: 2, $$childTail: m, $$childHead: m, $$prevSibling: null, 
   $$nextSibling: null, …}
   defaultPrevented: false
   name: "$routeChangeStart"
   preventDefault: ƒ ()
   targetScope: m {$id: 2, $$childTail: m, $$childHead: m, $$prevSibling: null, 
   $$nextSibling: null, …}
}

(targetScope==currentScope) 为真

该项目还使用 Kendo 和 JQuery

我确实意识到我不能期待任何具体的答案,但欢迎任何建议。

我应该在哪里寻找?

标签: javascriptangularjsroutinglegacy-code

解决方案


我必须做的是检查调试器中的调用堆栈在断点处停止

$rootScope.$on('$routeChangeStart' ...

pathParams 为空,因为路由无效。


推荐阅读