Getting the value of the table with ckeckbox and passing to the controller with AngularJS

0

Good Night!

I have a problem that I have not found a solution yet

First I make a query in the database that returns me some values and I play inside a table with ng-repeat

Table

<tr ng-repeat="contrato in contratos">
<td>{{contrato.NOME}}</td>
<td>{{contrato.CPF_CONTRATO}}</td>
<td>{{contrato.NUMERO_CONTRATO}}</td>
<td>{{contrato.FISICO}}</td>
<td><input type="checkbox" /></td>
</tr>

So far so good, but I need to make clicking on checkbox I get NUMERO_CONTRATO and pass function on my controller

Function

$scope.PegaContrato = function () {

}
    
asked by anonymous 26.08.2015 / 07:43

1 answer

5

Add the ng-click argument to your checkbox:

<input type="checkbox" ng-click="PegaContrato(contrato.NUMERO_CONTRATO)">

Then modify your function to receive the value:

$scope.PegaContrato = function (numero_contrato) {
    console.log(numero_contrato);
}

Done, so you can already know which contract was selected.


UPDATE:

English | English | If you need to remove a selected contract (reverse action), add the ng-checked argument to your checkbox:

<input type="checkbox" 
    ng-click="PegaContrato(contrato.NUMERO_CONTRATO)"
    ng-checked="contratos.indexOf(contrato.NUMERO_CONTRATO) > -1">

Change your role:

$scope.contratos = [];
$scope.PegaContrato = function (numero_contrato) {
    //console.log(numero_contrato);
    var index = $scope.contratos.indexOf(numero_contrato);

    // se já selecionou o contrato, então remove (nesse caso o checkbox foi desmarcado)
    if (index > -1)
        $scope.contratos.splice(index, 1);
    // se selecionou um novo contrato, adiciona ao array
    else
      $scope.contratos.push(numero_contrato);

    // print em tela do array com os contratos selecionados
    console.log(contratos);
}
    
26.08.2015 / 11:31