我有一个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
:一个包含正确的网址,另一个包含/
。正确的是包含/pricelist
的那个,但$location.path()
似乎返回了错误的。{/ p>
这里发生了什么?我做错了什么?
答案 0 :(得分:1)
因为您正在聆听$stateChangeStart
事件,$location.path()
仍然是当前路径,而不是它前往的路径。
您应该在toState
参数上进行验证。