我是angularJS的新手,最近開始學習它。我有以下的測試程序 -與angularJS混淆
<!DOCTYPE html>
<html lang="en-US">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body ng-app="rAPP">
<input type="text" ng-model="mod" ng-init="mod='value1'" />
<div ng-controller="testController">
<input type="hidden" id="testInput" ng-model="testInput" ng-init="testInput='value'" />{{ testInput }}
<span ng-bind="mod"></span>
</div>
<script>
angular.module('rAPP', [])
.controller('testController', ['$scope',
function($scope) {
alert(testInput);
var counter = 0;
$scope.$watch("mod", function() {
counter += 1;
$scope.mod = counter;
alert(counter);
});
}
]);
</script>
</body>
</html>
當我執行它,每次我在文本輸入的東西通過11.鍵入,計數器增加例如,一旦應用程序加載時,值在文本框中是value1,計數器是11。接下來,當我在文本框中進行任何修改時,該值將跳轉到22.無法理解爲什麼會發生這種情況。我的直覺是,可能在內部,鐘錶聽衆被稱爲11次。所以,我試着把一個警報聲明放在偵聽器函數中,並預期會顯示11次,但它只顯示一次
它對我來說顯示了11倍 –
你有循環依賴。你*觀看*'mod',但你可以在手錶處理程序中改變它。 – Jeroen
對不起,請刪除此行 - $ scope.mod = counter; –