Я пытаюсь создать историю введенных пользователем сообщений из одной текстовой области в другую текстовую область. Но как только символ вводится в первую текстовую область, он копируется во вторую текстовую область несколько раз. Похоже, что мое событие и, следовательно, метод Angular Controller вызывается несколько раз.Метод события AngularJS, называемый несколько раз
Может кто-то пожалуйста, посмотрите на эту jsfiddle http://jsfiddle.net/w4g417bt/
Код:
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<div data-ng-app='myNoteTakingApp1'
data-ng-controller="myNoteTakingController1">
<div style="float: left">
<textarea rows="10" cols="40" data-ng-model="message"></textarea>
<br> Characters Left: {{ left() }}
</div>
<div style="margin-left: 25em">
<textarea rows="10" cols="40" data-ng-model="messageHistory"
data-ng-disabled='true'></textarea>
<br> Characters Left: {{ leftHistory() }}
</div>
<div style="margin-left: 21em">
<button data-ng-click="clear();">Clear</Button>
</div>
</div>
<script>
var app = angular.module('myNoteTakingApp1', []);
app.controller('myNoteTakingController1', function($scope) {
$scope.message = "";
$scope.messageHistory = "";
$scope.left = function() {
return 100 - $scope.message.length;
}
$scope.leftHistory = function() {
$scope.messageHistory += $scope.message;
return 500 - $scope.messageHistory.length;
}
$scope.clear = function() {
$scope.message = "";
}
});
</script>
Это потому, что каждый раз, когда переваривать цикл выполняется, влево() и leftHistory() вызывается. Вы должны вызвать этот метод на ng-change и показать символ слева через переменную. –