Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Receber dados da View para o controller

Bom dia,

estou uma duvida simples acredito, estou tentando pega valores de um form quando eu faço um submit.

Aqui está o exemplo:

form:



<div class="modal fade" id="modalPassword" ng-app="custom.controllers" ng-controller="TesteController"> 
  <div class="modal-dialog"> 
    <div class="modal-content"> 
      <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal" aria-label="{{'Home.view.Close' | translate}}"><span aria-hidden="true">×</span></button> 
        <h4 class="modal-title">Cadastro</h4> 
      </div> 
      <div class="modal-body"> 
        <form class="form-validation" autocomplete="off" name="form" role="form"> 
          <div class="text-danger wrapper text-center" ng-show="authError"> 
          </div> 
          <div class="list-group list-group-sm"> 
            <div class="list-group-item"> 
          <input type="text" class="form-control no-border" ng-model="email" id="login" placeholder="Email"> 
            </div> 
            <div class="list-group-item"> 
              <input type="password" class="form-control no-border" ng-model="senha" id="password" placeholder="Senha"> 
            </div> 
          </div> 
        </form> 
      </div> 
      <div class="modal-footer"> 
        <button class="btn btn-primary" type="submit" onclick="recebeValores()">Cadastrar</button> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button> 
      </div> 
    </div> 
  </div> 
</div>

Aqui está meu controller:

(function($app) {
  angular.module('custom.controllers', []);
  app.controller('TesteController', ['$scope', '$http', function ($scope, $http) {

    function recebeValores(){
      $scope.email=""
      console.log($scope.email);

    }
  }]);    
}(app));

Só estou fazendo uns testes, mas os valores não chegam, se eu mudo o evento do botão de ng-click para onclick eu recebo a resposta no console de que:

recebeValores is not defined
    at HTMLButtonElement.onclick

Obrigado.

3 respostas
solução!

Olá, Gabriel!

Para que o método recebeValores do Controller fique disponível, você precisa "pendurá-lo" como uma propriedade do objeto usando o this.

Um outro detalhe, é que você está criando o módulo custom.controllers mas está colocando o Controller no $app.

Ah! O último detalhe é que, no recebeValores, você está limpando o $scope.email antes de imprimi-lo.

Acho que assim funcionaria:

(function($app) {
  angular
  .module('custom.controllers', [])
  .controller('TesteController', ['$scope', '$http', function ($scope, $http) {

    this.recebeValores = function () {
      console.log($scope.email);
    }
  }]);    
}(app));

Teste por aí e nos avise por aqui!

Alexandre obrigado pela atenção.

consegui fazer no fim ficou assim:

app.controller('adicionaUsuario', ['$scope', '$http', function ($scope, $http) {

    $scope.recebeValores = function(){
      var email = $scope.email
      var senha = $scope.senha;

      $http({
        method: "POST",
        url: "/adicionaUsuario",
        contentType : "application/json; charset=utf-8",
        data: {
          "login" : email,
          "password" : senha
        },

      }).success(function(data){

        console.log(data);
      })
    }



  }]);

Opa, Gabriel!

Percebi que você usou o $scope.recebeValores = function() { ... }. É isso!

O this só é usado com a sintaxe controllerAs no template. Exemplo: ng-controller="TesteController as teste"

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software