使用Angular UI Router从URL字符串获取状态

时间:2014-01-10 22:17:37

标签: javascript angularjs state angular-ui

我在项目中使用基于状态的路由(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,但没有这样的方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

全有或全无。如果您打算使用ui-router,请确保所有URL都解析为某个状态。如果状态不存在,它将进入otherwise状态。可以使用可选参数。

另一种方法是使用.htaccess重定向来捕获URL并在它到达ui-router之前重定向。

提供更多详细信息,我们可以看到最佳选择。

答案 1 :(得分:1)

尝试使用此功能将获得当前的状态名称。

var stateName = $state.current.name;