Angularjs 为什么';在$state.transition(';login';)之后提交工作;

Angularjs 为什么';在$state.transition(';login';)之后提交工作;,angularjs,angular-ui-router,angular-promise,Angularjs,Angular Ui Router,Angular Promise,我正在使用ui路由器在角度应用程序中进行路由。在httpInterceptor中,我正在检查身份验证拒绝,如果发现拒绝,则转换到“登录”路径。一切看起来都正常,但即使登录按钮最初工作(在访问任何其他页面之前),在转换到fire后,登录按钮的表单ng submit不会启动,就好像控制器没有加载一样,但没有错误。以下是我用于转换的内容: var pendingAuthRequest; this.responseError = function(response) { if (response

我正在使用ui路由器在角度应用程序中进行路由。在httpInterceptor中,我正在检查身份验证拒绝,如果发现拒绝,则转换到“登录”路径。一切看起来都正常,但即使登录按钮最初工作(在访问任何其他页面之前),在转换到fire后,登录按钮的表单ng submit不会启动,就好像控制器没有加载一样,但没有错误。以下是我用于转换的内容:

var pendingAuthRequest;
this.responseError = function(response) {
    if (response.status === 401 { //slightly truncated for brevity
        var defer = $q.defer();
        if (!pendingAuthRequest) { 
            pendingAuthRequest = AuthenticationService.refreshToken();
        }
        pendingAuthRequest.then(
            function() {
                pendingAuthRequest = undefined;
                defer.resolve(response);
            },
            function() {
                pendingAuthRequest = undefined;
                defer.reject(response);
            }
        );
        return defer.promise.then(
            function() {
                return ResolverService.get.$http(response.config);
            },
            function() {
                //probably a righter way to do this
                ResolverService.get.$state.transitionTo('login');
                return $q.reject(response);
            }
        );
    }
    else {
        return $q.reject(response);
    }
};
以下是路线:

$stateProvider.state('login', {
    url: '/login',
    templateUrl: 'components/user/login.html',
    controller: 'loginComponentCtrl as login',
    data: {
        title: 'Dashboard',
        titleIcon: 'fa-tachometer',
        noAuth: true
    }
});
这是登录按钮设置,这并不奇怪

<form name="login-form" ng-submit="login.login()">
...
    <button type="submit" ng-if="login.processing !== true">Login</button>
同样,登录页面在最初加载时可以正常工作,但在使用上述代码段转换到之后就不行了。刷新可解决此问题。知道这里发生了什么吗

(function() {
    'use strict';

    var app = angular.module('ctk.components.login', []);

    app.controller('loginComponentCtrl', ['AuthenticationService', loginComponentCtrl]);

    function loginComponentCtrl(AuthenticationService) {
        var self = this;

        self.processing = false;

        self.login = function() {
            self.processing = true;

            AuthenticationService.login(self.username, self.password)
                .then(function(success) {

                }, function(failureReason) {
                    self.errorMessage = failureReason;
                })
                .finally(function() {
                    self.processing = false;
                });
        };
    }
}());