$ location.path()无法正常工作。在工厂中从.then重定向

时间:2014-05-26 06:38:16

标签: angularjs angular-ui-router

无论我做什么,我都无法从我的工厂重定向工作。我也试过控制器,但一直在抛出错误。 TypeError: Cannot read property 'model.Email' of undefined

我知道帖子很成功我可以看到200并且它完美更新。这就是我所拥有的:

工厂功能显示我注射的内容:

app.factory('accountFactory', function ($http, $q, $cookieStore, $location)

我的工厂:

factory.register = function (data) {
    return $http.post(urlBase + '/Register', data).then(function(response) {
        if (typeof response.data === "object") {
            $location.path('/login');
            return response.data;
        } else {
            return $q.reject(response.data);
        }
    }, function(response) {
        return $q.reject(response.data);
    });
};

控制器:

app.controller('accountCtrl', function ($scope, accountFactory) {
    $scope.hello = 'hello';

    $scope.registerUser = function () {
        var data = {
            "Email": $scope.email,
            "Password": $scope.password,
            "ConfirmPassword": $scope.confirmpass
        };

        accountFactory.register(data).then(function(data) {
            $scope.message = 'Successfully Created User!';

        }, function (error) {
            $scope.message = error.Message;

            // Invalid Email
            if (error['ModelState']['model.Email'])
                $scope.errorEmail = error['ModelState']['model.Email'][0];
            else
                $scope.errorEmail = null;

            // Invalid Pass / Confirm
            if (error['ModelState']['model.Password'])
                $scope.errorPassword = error['ModelState']['model.Password'][0];
            else if (error['ModelState']['model.ConfirmPassword'])
                $scope.errorPassword = error['ModelState']['model.ConfirmPassword'][0];
            else if (error['ModelState'][''])
                $scope.errorPassword = error['ModelState'][''][0];
            else
                $scope.errorPassword = null;
        });
    };
})

如果我删除当然的位置一切都很完美。当我添加位置时,我得到了上面提到的错误。我相信这与承诺有关,但我不确定是什么。

1 个答案:

答案 0 :(得分:1)

你需要解决这个承诺。

factory.register = function (data) {
    return $http.post(urlBase + '/Register', data).then(function(response) {
        if (typeof response.data === "object") {
            $location.path('/login');
            return $q.resolve(response.data);
        } else {
            return $q.reject(response.data);
        }
    }, function(response) {
        return $q.reject(response.data);
    });
};