2015-08-19 3 views
1

У меня очень простой шаблон формы и контроллер. Но я не могу вызвать функцию из функции видимости onSubmit. Контроллер:Невозможно вызвать другую функцию из области действия onSubmit

angular 
    .module('myApp') 
    .controller('registerUserCtrl', registerUserCtrl); 


    function registerUserCtrl($scope, $location, $window, authenticationService, $http, vcRecaptchaService){ 


     $scope.pageHeader = { 
      title: 'Register', 
     }; 


     $scope.register = function (data) { 

      console.log('in scope.register '); 

       userService.register(data) 
        .success(function(data) { 

         console.log('setting to true.....'); 

         authenticationService.isLoggedIn = true; 
         authenticationService.user = data.user; 
         authenticationService.token = data.token; 

         $location.path("/"); 
        }).error(function(status, data) { 
         console.log(status); 
         console.log(data); 
         $scope.formError = "This email has already been taken"; 
        }); 

     } 


     $scope.onSubmit = function() { 

      console.log('in onSubmit'); 

      //N.B. Need to veriify this 
      var response = vcRecaptchaService.getResponse(); 

      $scope.formError = ""; 

      if(!$scope.formData || !$scope.formData.email || !$scope.formData.password) { 
       $scope.formError = "All fields required, please try again"; 
       return false; 
      } else { 

       console.log('$scope is '); 
       console.log($scope); 
       $scope.register($scope.formData);   
      }  

     }; 



    } 

И шаблон:

<div id="register-wrapper"> 
    <form class="form-horizontal" role="form" ng-submit="onSubmit()"> 
     <div role="alert" ng-show="formError" class="alert alert-danger">{{ formError }}</div> 


     <div class="form-group"> 
      <label for="inputEmail" class="col-sm-4 control-label">Email</label> 
      <div class="col-sm-4"> 
       <input type="email" class="form-control" id="inputEmail" placeholder="Email" ng-model="formData.email"> 
      </div> 
     </div> 
     <div class="form-group"> 
      <label for="inputPassword" class="col-sm-4 control-label">Password</label> 
      <div class="col-sm-4"> 
       <input type="password" class="form-control" id="inputPassword" placeholder="Password" ng-model="formData.password"> 
      </div> 
     </div> 

     <div vc-recaptcha key="'6Lf6aQsTAAAAAACdCxN2FqHHKpz0RyF9jMJsn6h4'"></div> 


     <div class="form-group"> 
      <div class="col-sm-offset-4 col-sm-10"> 
       <button type="submit" class="btn btn-default">Register</button> 
      </div> 
     </div> 
    </form> 
</div> 

Я всегда в конечном итоге с:

undefined is not a function 

на $scope.register($scope.formData); линии. Я делал это много раз, но почему-то теперь его не работает ...

+2

'userService' никогда не вводится в контроллер .. – tymeJV

ответ

1

Вы должны вводить userSevice в контроллере в зависимости

angular 
    .module('myApp') 
    .controller('registerUserCtrl', registerUserCtrl); 


    function registerUserCtrl($scope, $location, $window, authenticationService, 
     $http, vcRecaptchaService, userSevice) 
    { 
+0

Ya thats это, угловой отчет об ошибках - это мусор – Mark

+0

@Mark Рад услышать здесь, что ... Спасибо :) –

+1

gimme 20 секунд :) – Mark

Смежные вопросы