我在项目中使用基于状态的路由(Angular UI Router v0.2.7),并寻找从给定URL字符串获取当前状态(名称)的方法。
类似的东西:
$state.get([urlString]) returns stateName:String or state:Object
我需要此方法来检查给定URL是否存在状态,因为并非所有URL都映射到项目中的状态。使用Play Framework作为后端,一些URL(例如,登录表单)未映射到状态,因为它们使用不同的模板,然后是我的应用程序的Angular(主要)部分。 对于那些“无角度”的页面(即,没有被国家覆盖),我会重新加载。要识别状态未涵盖的URL,我需要上述方法。计划像这样做:
$rootScope.$watch(function() { return $location.path(); }, function(newUrl, oldUrl) {
if(newUrl !== oldUrl) {
if (!$state.get(newUrl)) {
$window.location.assign(newValue);
}
}
}
已经检查了docu,但没有这样的方法。
有什么想法吗?
答案 0 :(得分:1)
全有或全无。如果您打算使用ui-router,请确保所有URL都解析为某个状态。如果状态不存在,它将进入otherwise
状态。可以使用可选参数。
另一种方法是使用.htaccess
重定向来捕获URL并在它到达ui-router之前重定向。
提供更多详细信息,我们可以看到最佳选择。
答案 1 :(得分:1)
尝试使用此功能将获得当前的状态名称。
var stateName = $state.current.name;