我有一个 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,因此设置了错误的名称。
如您所见,有两个 $$path
:一个具有正确的 URL,另一个仅具有 /
。正确的值是包含 /pricelist
的值,但 $location.path()
似乎返回了错误的值。
这里发生了什么?我做错了什么?
最佳答案
因为您正在监听 $stateChangeStart
事件,所以 $location.path()
仍然是当前路径,而不是它前往的路径。
您应该验证 toState
参数。
关于javascript - $location.path() 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32136778/