Javascript $location.path(…)不更新页面

Javascript $location.path(…)不更新页面,javascript,angularjs,Javascript,Angularjs,我正在尝试在成功登录后移动到用户的主页。 通过调用$location.path()可以正确更新浏览器的地址栏,但不会重新加载页面 我知道这是一种常见的问题,有几个潜在的原因 我认为我正确地处于angular生命周期内,因为成功的身份验证要么是由$http.post响应触发的,要么是通过和angular$timeout模拟的(两种方法都不起作用) 添加$scope.apply()无论如何都没有帮助 例如,设置$location.absUrl(“”)完全没有效果 以下是登录控制器: var sw

我正在尝试在成功登录后移动到用户的主页。 通过调用$location.path()可以正确更新浏览器的地址栏,但不会重新加载页面

我知道这是一种常见的问题,有几个潜在的原因

  • 我认为我正确地处于angular生命周期内,因为成功的身份验证要么是由$http.post响应触发的,要么是通过和angular$timeout模拟的(两种方法都不起作用)
  • 添加$scope.apply()无论如何都没有帮助
  • 例如,设置$location.absUrl(“”)完全没有效果
以下是登录控制器:

var swControllers = angular.module('swControllers', []);

swControllers.controller('LoginCtrl', ['$scope', '$location', 'authentication',
    function($scope, $location, authentication) {
        authentication.ClearCredentials();

        $scope.login = function () {
            $scope.dataLoading = true;
            authentication.Login($scope.email, $scope.password, function(response) {
                $scope.dataLoading = false;
                if (response.success) {
                    authentication.SetCredentials($scope.email, $scope.password);
                    $location.path('userHome');
                    //$location.absUrl('http://google.com');
                    //$scope = angular.element(document).scope();
                    //$scope.$apply();

                } else {
                    $scope.error = response.message;
                    // $scope.dataLoading = false;
                }
            });
        };
}]);
我有更普遍的架构问题:依赖ngRoute来完成这类工作是否更干净?这是否意味着我仅限于一个页面的应用程序

因为我在服务器端使用Express+jade模板视图,并且当前登录页面和用户主页位于两个不同的模板上


服务器端和客户端路由之间的相互作用让我有点眼花缭乱…

我们能看看控制器吗?您是否正在注入
$location
服务?