$ location在Angular中不起作用

时间:2014-11-12 02:11:40

标签: javascript angularjs rest

我有一个休息api,其中api正在发送重定向指令(301正在发送)。

我的角度js代码是这样的:

    var request = $http.post(LOGIN_URL,{username:'tes',password:'test'})

    request.success(function(html)
    {
        if(html.failure) {
            console.log("failure")
            $scope.errorMessage = html.failure.message
        }

        else {
            console.log("Success here....")
            $location.path("route")
        }
    })

我可以在浏览器日志中看到它正在进入else部分(正在打印Success here.....)。但网址没有改变。 $location.path没有做任何事;我也试过了$location.url,这也导致了同样的结果。

而且我正在向我的控制器注入$location

我犯错误的地方?

提前致谢。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情

$location.path("/myroute")

你也必须在页面上有一个ng-view。

答案 1 :(得分:1)

还要确保您具有该名称的相应视图 当您注册控制器时,您拥有“$ location”' var被注入控制器的声明中,如下例所示:

    controllers.controller('MyCtrl', ['$scope', '$route', '$location', 'MYService',
        function($scope, $route, $location, MyService) {

// ... controller code

    }])

您也可能希望调试路由更改以查看位置更改侦听器发生的情况,如下例所示:

return app.config(['$routeProvider', function($routeProvider) {

        $routeProvider.    
          when('/home', {
            templateUrl: 'partials/home.html',
            controller: 'MyCtrl'
          }).
          when('/login', {
            templateUrl: 'partials/login.html',
            controller: 'LoginCtrl'
          }).
          when('/error/:errorId', {
              templateUrl: 'partials/error.html',
              controller: 'ErrorCtrl'
          }).      
          otherwise({
            redirectTo: '/home'
          });

    }]).run(function($rootScope, $injector, $location) {
        $rootScope.$on("$locationChangeStart", function(event, next, current) {

            console.log('current=' + current.toString());
            console.log('next=' + next.toString());         
        });
    });
});