2015-06-19 17 views
6

So come reagire all'input dell'utente in una textarea con ng-change in AngularJS. Ma come posso ottenere l'input corrente all'interno del controller Angolare? Mi manca qualcosa come $(this).value(); in jQuery.Come ottenere il valore di un campo con ng-change

<script> 
    angular.module('changeExample', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
     $scope.evaluateChange = function() { 
     console.log("How do I get the current content of the field?"); 
     }; 
    }]); 
</script> 

<div ng-controller="ExampleController"> 
    <textarea ng-change="evaluateChange()" id="ng-change-example1"></textarea> 
</div> 
+0

(https://docs.angularjs.org/api/ng/directive/ngModel) invece –

risposta

10

ng-modello

Sarà memorizzare il valore di un ingresso, textarea, oppure selezionare.

il codice HTML dovrebbe essere simile a questo:

<div ng-controller="ExampleController"> 
    <textarea ng-model="myValue" ng-change="evaluateChange()" id="ng-change-example1"></textarea> 
</div> 

Poi nel controller è possibile fare riferimento che con $scope.myValue

Speranza che aiuta! :)

+0

Grazie, che aiuta. Ma cosa succede se ho diversi textareas e voglio solo una funzione nel mio controller che reagisca ai cambiamenti in ognuno di essi. Come farei di riferimento? –

+0

In questo caso probabilmente inserirò la funzione evaulateChange() in ogni ng-change di ogni textarea. Ogni volta che si cambia, la funzione si attiva e da lì è possibile fare riferimento a ciascun modello di ng all'interno di esso –

+0

Ma come faccio a sapere da quale textarea è stato chiamato changeChange()? C'è un modo per sapere? –

9

È possibile utilizzare $ evento per ottenere il valore dell'elemento corrente. Qualcosa di simile a questo uso [ng-modello]

<script> 
    angular.module('changeExample', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
     $scope.evaluateChange = function(obj,$event) { 
     var currentElement = $event.target; 
     console.log(currentElement.value);//this will give you value of current element 
     }; 
    }]); 
</script> 

<div ng-controller="ExampleController"> 
    <textarea ng-change="evaluateChange(this)" id="ng-change-example1"></textarea> 
</div> 
+0

Questo è esattamente quello che sto cercando, ma non capisco: per me, dice "Impossibile leggere la proprietà 'target' di undefined" –

+1

@VasilyHall vedi la mia modifica –

Problemi correlati