$ location.path()返回错误的值

时间:2015-08-21 09:18:51

标签: 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:一个包含正确的网址,另一个包含/。正确的是包含/pricelist的那个,但$location.path()似乎返回了错误的。{/ p>

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

1 个答案:

答案 0 :(得分:1)

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

您应该在toState参数上进行验证。