TypeError:无法读取未定义的属性“path”

时间:2015-08-27 15:25:11

标签: angularjs typescript

当登录成功时,我尝试重定向其他页面,在这种情况下,我在成功时使用了演示页面index.html。但是$ location.path没有重定向到新页面。我得到错误为TypeError:无法读取undefined的属性'path'。

module LoginModule {
    export class LoginController {
        username: string;
        password: string;
        static $inject = ['$http','$location'];
        constructor(private $http : ng.IHttpService,private $location : ng.ILocationService){
        }
        login() {
            this.$http({
                method: 'POST',
                url: 'https://localhost:8061/nada/login',
                data : $.param({'username' : this.username, 'password' : this.password}),
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                }}).success(function(data) {
                    this.$location.path("/success");
                   //alert("sucess");
                }).error(function(error) {
                    JSON.parse(error);
                    alert('No access available.');
                   // console.log(result);
                });
        }
    }

    angular.module('loginModule', ['ngRoute']).controller('LoginController', LoginModule.LoginController).config(['$routeProvider' ,function($routeProvider) {
        $routeProvider.
            when("/", {
            templateUrl: 'html/login.html'
        })

        .when("/success", {
            templateUrl: 'html/index.html',
            controller: 'clientsController'
        })
        .otherwise({redirectTo: '/'});

    }]);

}

我的代码中是否缺少某些内容。此外,我已将路由部分放在.config方法中,我可以将其移动到类中,因为我尝试在typescript中执行此操作,如果是这样,我如何在mycontroller中访问它。

我有登录页面,接受用户名和密码。并打个电话

1 个答案:

答案 0 :(得分:3)

您需要在成功处理程序中保留词法范围,以便通过使用胖箭头函数将this用作您班级的上下文......

}}).success(function(data) {
                this.$location.path("/success");

需要:

}}).success((data) => {
                this.$location.path("/success");

胖箭头功能是你的朋友 =>