Why AngularJS ng-bind does not update the view
当
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <body ng-app="bindExample"> angular.module('bindExample', []) .controller('ExampleController', ['$scope', function($scope) { var vm = this; vm.name = 'Whirled'; window.setInterval(function(){ vm.name = 'Jon';}, 5000); }]); Hello <span ng-bind="vm.name"></span>! </body> |
我希望在5秒钟后,输出更改
使用
Angular's wrapper for window.setInterval here is the DOC
1 2 3 | $interval(function(){ vm.name = 'Jon'; }, 1000); |
别忘了注射EDOCX1[0]as,
1 | .controller('ExampleController', ['$scope', $interval, function($scope, $interval) { .... |
当使用
或者使用
1 2 3 4 | window.setInterval(function(){ vm.name = 'Jon'; $scope.$apply(); }, 5000); |
$apply enables to integrate changes with the digest cycle
这个答案会有帮助的
是的,使用$interval是一种解决方案。通常,您会在$scope的方法属性上更改模型。因此,Angular将负责更新视图。如果在指令内使用jquery回调,则必须使用scope.$apply,以便angular知道发生了什么。