2015-06-19 16 views
6

Ich weiß, wie auf Benutzereingabe in einem Textfeld mit ng-Änderung in AngularJS reagieren. Aber wie kann ich den aktuellen Eingang in den Angular Controller bekommen? Ich vermisse etwas wie $(this).value(); in jQuery.Wie bekomme ich den Wert eines Feldes mit ng-Änderung

<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

Verwenden [ng-Modell] (https://docs.angularjs.org/api/ng/directive/ngModel) statt –

Antwort

10

ng-Modell

Es wird den Wert eines Eingangs, Textbereich speichern oder wählen.

sollten Ihre HTML so aussehen:

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

Dann in Ihrem Controller können Sie mit $scope.myValue

Hoffnung verweisen, dass das hilft! :)

+0

Danke, das hilft. Aber was, wenn ich mehrere Textareas habe und ich möchte nur eine Funktion in meinem Controller, die auf Änderungen in einem von ihnen reagiert. Wie würde ich darauf verweisen? –

+0

In diesem Fall würde ich wahrscheinlich die Funktion evaulateChange() in jeder ng-Änderung jedes Textfelds einfügen. Immer wenn man sich ändert, wird die Funktion ausgelöst, und von dort kann man auf jedes einzelne ng-Modell verweisen, das darin enthalten ist. –

+0

Aber woher weiß ich, aus welchem ​​Textbereich evaluateChange() aufgerufen wurde? Gibt es eine Möglichkeit zu wissen? –

9

Sie können $ event verwenden, um den Wert des aktuellen Elements zu erhalten. So etwas wie dieses

<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

Dies ist genau das, was ich suche, aber ich verstehe es nicht: für mich heißt es "Kann nicht lesen Eigenschaft Ziel von undefined" –

+1

@VasilyHall siehe meine Bearbeitung –

Verwandte Themen