【发布时间】:2017-10-02 09:55:32
【问题描述】:
最近我在学习 Angularjs,我的代码似乎没有按预期工作:
这是我的div:
<div ng-app="myApp">
<div ng-controller="myController">
<input type="text" ng-model="data.name" value=""/>
{{data.count}}
</div>
</div>
我的controller 是:
<script>
var app = angular.module('myApp',[]);
app.controller('myController', function($scope) {
$scope.data = {
name:"tom",
count = 0
}
$scope.$watch('data', function(oldValue,newValue) {
++$scope.data.count;
},true);
})
</script>
我期望的是,当我在 <input> 框中输入内容时,{{data.count}} 每次都会增加 1。但是代码最初是 11,每次我在输入字段中进行更改时,计数都会增加 11,有人可以帮我找出哪里做错了吗?提前非常感谢。
【问题讨论】:
-
感谢大家的回答。我的一位朋友指出了我的问题。也就是说,当我观察完整的对象时,对象中的元素会有很多子观察者,当
name改变时,count也会增加,但是count也是一个元素它将一次又一次调用 watch 的对象,这是一种死锁情况,$digest 最多只能工作 10 次,所以这就是为什么它每次增加 11。
标签: angularjs