AngularJs:而不是$ scope:TypeError:this。*不是*的函数

时间:2015-12-18 07:58:40

标签: angularjs angularjs-controlleras

我在尝试为网络实现注册功能时遇到了问题。

老实说,我刚刚阅读了一些关于angularJs(以及一点点关于javascript)的文档。所以,请不要这么难,请:)

以下是我的指示:

 var app = angular.module('register-user', []);

    app.directive('register', function () {
        return {
            restrict: 'E',
            templateUrl: 'app/views/register.html',
            controller: RegistestCtrl,
            controllerAs: 'registerCtrl'
        };
    });

控制器:

RegistestCtrl.$inject = ['RegisterService'];
function RegistestCtrl(registerService) {

    this.user = {};
    this.isProcessing = false;

    this.isRegistering = function () {
        return this.isProcessing;
    };

    this.setRegistering = function (value) {
        this.isProcessing = value;
    };

    this.register = function () {
        this.setRegistering(true);
        function registerSuccess(result) {
            alert("registerSuccess: " + JSON.stringify(result));
            this.setRegistering(false);
        }

        function registerFail(error) {
            alert(error.message)
            this.setRegistering(false);
        }
        registerService.register(this.user.email, this.user.pass).then(registerSuccess, registerFail);
    };
}

以下是服务:

angular.module('app').factory('RegisterService', RegisterService);
RegisterService.$inject = ['$http', 'ENDPOINT'];

function RegisterService($http, endpoint) {

    var service = {};
    service.register = register;
    return service;

    function register(email, pass) {
        return $http({
            method: 'POST',
            url: endpoint.URL + endpoint.REGISTER,
            data: {
                "email": email,
                "password": pass
            }
        }).then(handleSuccess, handleError);
    }

    function handleSuccess(res) {
        return res.data;
    }

    function handleError(error) {
        return function () {
            return {
                success: false,
                message: error
            };
        };
    }
}

最后,问题是:

  

TypeError:this.setRegistering不是registerSuccess的函数

它指向以下几行:

this.setRegistering(false);
this.setRegistering(false);

其他的事情还可以,但我想在完成注册时将其称为隐藏进度圈。你能不能给我这里暗示一下

我认为这里的变量范围出了问题。但我不知道从哪里开始。

0 个答案:

没有答案