javascript - $location.path() 返回错误值

标签 javascript angularjs

我有一个 Angular 应用程序,它分为多个较小的应用程序。该系统工作起来非常简单:用户登录,然后他可以选择他想要使用的子应用程序。

我想在标题中显示应用程序的名称。在 .run 中,我将其放在 $rootscope 上。我把它放在这里的原因很简单:用户可以正常使用应用程序,但他也可以决定只使用 F5 刷新页面。这样,我就可以通过 URL 来确定用户正在运行哪个应用程序。

$rootScope.$on( '$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
               // bunch of other code
                            var path = $location.path();
                            console.log($location);
                            if (path.indexOf("pricelist") > -1) {
                                authentication.setApplication("PRICELIST");
                            } else {
                                authentication.setApplication("HUB");
                            }
                            $state.go(toState, toParams);
                        }
                    }
                });
            });

如果 URL 包含“pricelist”,则应将应用程序名称设置为“PRICELIST”。但是,该语句返回 false,因此设置了错误的名称。

调试后,我注意到 $location 中有一些奇怪的东西: console.log of $location

如您所见,有两个 $$path:一个具有正确的 URL,另一个仅具有 /。正确的值是包含 /pricelist 的值,但 $location.path() 似乎返回了错误的值。

这里发生了什么?我做错了什么?

最佳答案

因为您正在监听 $stateChangeStart 事件,所以 $location.path() 仍然是当前路径,而不是它前往的路径。

您应该验证 toState 参数。

关于javascript - $location.path() 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32136778/

相关文章:

javascript - Angular Material 和 Controller 的客户指令

javascript - UI-路由器 : sequential resolve of parent and child states

javascript - 重复代码检测 : Tools you can use

javascript - Angularjs动态表

javascript - 注销后如何重定向用户

javascript - 当父组件和子组件都是函数组件时,如何将函数作为 Prop 传递?

c# - Angular 处理从 Web Api 返回数据作为错误

javascript - 如何将 1 个字母从大写转换为小写,这不是 Javascript 中的第一个字母

javascript - 移除 DOM 元素时防止视口(viewport)移动

javascript - 是否可以对 Redux Toolkit Slice 的状态使用 typescript 联合类型?