javascript - Angular $scope 变量已更新但未显示

标签 javascript angularjs

在下面的 Controller 中 $scope.timer 每秒递增,但在 View 中 {{timer}} 不反射(reflect)其内容。

myapp.controller('TimeCtrl', ['$scope', function($scope){
    $scope.timer = 0;
    setInterval(function(){
        $scope.timer = $scope.timer + 1;
        console.log($scope.timer);
    },1000);
}]);

我可以在计时器更新后添加 $scope.$apply(); 来解决这个问题,为什么呢?为什么计时器没有更新?

在这里摆弄:http://jsfiddle.net/wvxgzx76/1/

最佳答案

因为 setInterval 位于 $digest 循环之外 - 请改用 Angulars $interval 指令:

myapp.controller('TimeCtrl', ['$scope', '$interval', function($scope, $interval){
    $scope.timer = 0;
    $interval(function(){
        $scope.timer = $scope.timer + 1;
        console.log($scope.timer);
    },1000);
}]);

关于javascript - Angular $scope 变量已更新但未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26658120/

相关文章:

javascript - 当我尝试以 Angular 使用 Controller 时,我的页面变成空白

javascript - 达到最大长度后 AngularJS 换行符

angularjs - 是否可以在不触发 $watch 回调的 $watched 范围属性上设置一个值?

javascript - ngRepeat 对象上的高级 AngularJS 自定义过滤

javascript - JSON.解析: Unable to find error in code

javascript - 我可以在非 SPA 项目上使用 Axios 吗?

javascript - CSS 只允许在网页上选择文本?

javascript - 绑定(bind)到 ngFor 中子组件的属性时出现循环依赖错误

javascript - 当我的 View / Controller 需要位于同一个文件中时,构建 js 应用程序的最佳方法是什么

javascript - 如何从angularjs中的单选按钮列表中获取选定的值