使用带有AngularJS的setInterval()更新每个tick中的变量

时间:2015-06-29 08:49:52

标签: javascript angularjs

我正在尝试使用setInterval()在JS中每x秒计算一个变量,并在我的视图中显示它以Angular方式绑定此变量。问题是,在模型中,var被计算在内,但只要我停止Interval就会显示进度。如何在每个tick上更新视图中的var?

<span>{{number}}</span> 

$scope.number = 0;
$scope.interval;

$scope.run = function(){
    $scope.interval = setInterval(function(){
        $scope.number++;
    }, 1000);
};

$scope.stop = function(){
    clearInterval($scope.interval);
}

Fiddle

2 个答案:

答案 0 :(得分:3)

您应该使用Angular的名为$interval$scope.run = function() { $scope.interval = $interval(function() { $scope.number++; }, 1000); }; $scope.stop = function() { $interval.cancel($scope.interval); }; 实现。

这不仅可以确保回调中的任何代码都能调用摘要,还可以帮助您轻松测试代码:

interval

我还会避免将$scope变量附加到var interval。我看不出你的观点需要注意的任何理由。控制器范围内的私有private void button1_Click(object sender, EventArgs e) { string inStr = "Temperature:36.20C"; int indexOfSpace = inStr.IndexOf(':'); //stores the address of the space int indexOfC = inStr.IndexOf("C"); //stores the address of char C string Temp = inStr.Substring(indexOfSpace + 1, indexOfC); textBox1.Text = Temp; } 就足够了。

答案 1 :(得分:0)

var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', function ($scope, $interval) {
    $scope.number = 0;

    $scope.run = function (){
        $scope.interval = $interval(function(){ 
            $scope.number++;
        }, 1000);
    };

    $scope.stop = function() {
        $interval.cancel($scope.interval);
    };

});