Angularjs $state.go()转换出现问题,仅在第二次单击时出现

Angularjs $state.go()转换出现问题,仅在第二次单击时出现,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个ui路由器的问题,我不能完全把我的手指。我可以单击一个链接(在我的应用程序的登录页面上)并导航到第二个页面(用户可以注册的页面)。在第二页上有一个取消按钮,它可以简单地将用户导航回第一页。到目前为止一切都很好 如果我再次单击同一链接,用户似乎停留在同一页面(即登录页面),但我已将“状态更改”处理程序添加到我的应用程序(它只是将转换记录到控制台),可以看到实际发生的情况是,应用程序似乎转换到第二个页面,然后再次返回。除了演示流程之外,以下内容没有多大意义。在再次启动并转换回“authent

我有一个ui路由器的问题,我不能完全把我的手指。我可以单击一个链接(在我的应用程序的登录页面上)并导航到第二个页面(用户可以注册的页面)。在第二页上有一个取消按钮,它可以简单地将用户导航回第一页。到目前为止一切都很好

如果我再次单击同一链接,用户似乎停留在同一页面(即登录页面),但我已将“状态更改”处理程序添加到我的应用程序(它只是将转换记录到控制台),可以看到实际发生的情况是,应用程序似乎转换到第二个页面,然后再次返回。除了演示流程之外,以下内容没有多大意义。在再次启动并转换回“authentication.login”之前,您可以看到状态更改开始、结束和视图加载

Start state change : {authentication.login} to {authentication.registration}
View content loading
End state change success : {authentication.login} to {authentication.registration}
View content loaded
Start state change : {authentication.registration} to {authentication.login}
View content loading
End state change success : {authentication.registration} to {authentication.login}
View content loaded
注意:两个页面都是同一抽象节点的同级

你知道为什么会这样吗

注:状态配置如下

.state("authentication", {
    url : "/auth",
    abstract : "true",
    templateUrl : "app/main/common/html/templates/simple-template.html",
})

.state("authentication.login", {
    url: "/login",
    views: {
        "main": {
            templateUrl : "app/main/authentication/html/login.html",
            controller: "LoginController"
        }
    }
})

.state("authentication.registration", {
    url: "/registration",
    views: {
        "main": {
            templateUrl : "app/main/authentication/html/registration.html",
            controller: "RegistrationController"
        }
    }
})
有吗 rootScope.$on(“$stateChangeStart”
应用程序中导致状态转换的逻辑。 通常情况下,如果用户未经身份验证,逻辑将放在这里,将用户踢回登录页面 这是一个粗略的猜测,但鉴于提供的信息,这是我能做出的最好的猜测。 谢谢


另一个想法是,如果删除状态更改处理程序,一切正常吗?

我很确定我们没有,只是为了确保我检查了。我能看到的唯一$stateChangeStart引用是在我自己的状态更改处理程序中,它只将状态更改记录到控制台(当然还有角度libs)。我偶尔会将我的处理程序用作调试工具。为了确保这不会导致问题,我将其从模块中完全删除。仍然会得到相同的行为。我将使用这两个屏幕的配置更新主要问题,以防我做错了什么。谢谢。我相信我说的抽象状态不存在是对的st本身,但用于为所有子状态提供公共配置。我认为这意味着authentication.login和authentication.registration将使用抽象状态中定义的相同模板。但是,为抽象状态定义URL没有意义(如果我的想法正确的话)因为两个子项都覆盖了它。但是,不确定这是否导致了您遇到的问题。是否也应该引用“true”?