javascript
setInterval(function () {
$scope.params.txt += 1;
console.log($scope.params.txt )
},1000)
html
<textarea id="text" cols="30" rows="10">{{params}}</textarea>
在js的控制器里我改变params.txt的值为什么相应的视图并没有改变,而log出的数据改变了?
angular JS的双向绑定的机理大概是在函数调用前记录下scope里的所有值,运行结束之后再检查一遍,以此比较scope里的值是否发生了变化,从而实现双向绑定。
但是setTimeout
、setInterval
等函数里面对scope的修改是异步的,函数运行完之后scope并没有发生变化,所以自然也不会应用到view上。
解决方法有两种:
在修改了scope里的值之后加上
$scope.apply();
使用angular提供的
$interval
或$timeout
.
`