AngularJS视图不会在模型更改时更新
AngularJS view not updating on model change
我试图弄清楚 Angular 是如何工作的,并且在模型更改时无法更新我的视图。
.HTML
<div ng-app="test">
<p ng-controller="TestCtrl">
{{testValue}}
</p>
</div>
.JS
var app = angular.module('test', []);
app.controller('TestCtrl', function ($scope) {
$scope.testValue = 0;
setInterval(function() {
console.log($scope.testValue++);
}, 500);
});
http://jsfiddle.net/N2G7z/
有什么想法吗?
正如上面提到的Ajay beniwal,你需要使用Apply来开始消化。
var app = angular.module('test', []);
app.controller('TestCtrl', function ($scope) {
$scope.testValue = 0;
setInterval(function() {
console.log($scope.testValue++);
$scope.$apply()
}, 500);
});
只需使用$interval
这是您修改的代码。http://plnkr.co/edit/m7psQ5rwx4w1yAwAFdyr?p=preview
var app = angular.module('test', []);
app.controller('TestCtrl', function ($scope, $interval) {
$scope.testValue = 0;
$interval(function() {
$scope.testValue++;
}, 500);
});
setTimout
在Angular 之外执行。 您需要使用$timeout
服务才能正常工作:
var app = angular.module('test', []);
app.controller('TestCtrl', function ($scope, $timeout) {
$scope.testValue = 0;
$timeout(function() {
console.log($scope.testValue++);
}, 500);
});
原因是角度中的双向绑定使用脏检查。 这是一篇关于 angular 脏检查的好文章。 $scope.$apply()
拉开了$digest
周期的序幕。 这将应用绑定。 $timeout
为您处理$apply
,因此建议在使用超时时使用该服务。
本质上,绑定发生在$digest
周期中(如果值不同(。
不要使用 $scope.$apply()
angular 已经使用它,它可能会导致此错误
$rootScope:正在进行的行动
如果使用两次,请使用$timeout
或间隔
相关文章:
- 视图ngValue-Angular JS中未更新模型的更改
- 需要使用触摸屏从 AngularJS 指令中更新模型
- 角度指令没有更新模型视图
- 复选框仅在第二次单击后更新模型
- Angular.js-Socket.io事件更新模型,而不是视图
- UI Select在删除后不会更新模型
- 为什么ng提交没有提交和更新模型
- AngularJS-基于URL更新模型
- 视图更改时,Ember.js更新模型
- Knockoutjs函数更新模型时应出现异常
- 挖空绑定不会更新模型
- 范围不更新模型中的更改
- 导航时更新模型变量
- 角度.js更新模型
- Ember.js不更新模型
- 在使用挖空自定义绑定时更新模型时更新元素
- 在自我更新时以ng重复更新模型
- 如何在主干中对列表进行排序时更新模型的顺序属性
- AngularJS 复选框不更新模型
- 更新模型中的数据不会绑定到控制器