我試圖創建一個用戶從一個文本區域輸入消息到另一個文本區域的歷史記錄。 但是,只要在第一個文本區域輸入一個字符,就會多次將其複製到第二個文本區域。看起來好像我的事件以及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上調用這些方法,並通過變量顯示字符。 –