Javascript 为什么AngularJS ng bind不更新视图
当Javascript 为什么AngularJS ng bind不更新视图,javascript,angularjs,ng-bind,Javascript,Angularjs,Ng Bind,当ng bind属性更改时,为什么这个小角度模块不能更新视图 <body ng-app="bindExample"> <script> angular.module('bindExample', []) .controller('ExampleController', ['$scope', function($scope) { var vm = this; vm.name = 'Whirled'; window.setIn
ng bind
属性更改时,为什么这个小角度模块不能更新视图
<body ng-app="bindExample">
<script>
angular.module('bindExample', [])
.controller('ExampleController', ['$scope', function($scope) {
var vm = this;
vm.name = 'Whirled';
window.setInterval(function(){ vm.name = 'Jon';}, 5000);
}]);
</script>
<div ng-controller="ExampleController as vm">
Hello <span ng-bind="vm.name"></span>!
</div>
</body>
angular.module('bindExample',[])
.controller('ExampleController',['$scope',function$scope){
var vm=这个;
vm.name='Whirled';
setInterval(函数(){vm.name='Jon';},5000);
}]);
你好
我希望在5秒钟后,输出会发生变化,因为它保持在
Hello Whirled
。为什么会这样?我还需要做什么吗?使用$interval
服务
Angular的window.setInterval包装器这里是
不要忘记将$interval
作为
.controller('ExampleController', ['$scope', $interval, function($scope, $interval) { ....
使用setInterval
时超出角度范围,因此需要在此处使用$interval
<代码>$interval是针对范围执行的
或使用
$scope.$apply()
window.setInterval(function(){
vm.name = 'Jon';
$scope.$apply();
}, 5000);
$apply允许将更改与摘要周期集成
是的,使用$interval是一种解决方案。通常,您会在$scope的method属性上更改模型。因此angular将负责更新视图。如果在指令中使用jQuery回调,则必须使用scope.$apply,以便angular知道发生了什么谢谢。如果我调用AJAX读取值,然后将其应用到我的resource
success
函数中的模型,我是否也需要使用$apply
呢?如果您使用angular的$http服务从服务器检索数据,那么无需调用$scope.apply();如果您使用上次评论中提到的angular$http
服务,则不会这样做,但是如果您使用类似jquery ajax的服务,则需要使用$apply()
告诉angular to有一些超出范围的内容,并且需要绑定到范围。
window.setInterval(function(){
vm.name = 'Jon';
$scope.$apply();
}, 5000);