Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么AngularJS ng bind不更新视图_Javascript_Angularjs_Ng Bind - Fatal编程技术网

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);