设置angularjs的时间延迟

时间:2015-01-28 13:50:43

标签: asp.net angularjs

我想在每次延迟2秒后将数据推入数组。

//工作代码

$scope.GetData = function(){
  DataFactory.GetCategories()
  .success(function(data,status){
    $scope.TheArray.push(data);
   })
}

//这不起作用。 html中没有显示数据

$scope.GetData = function(){
  DataFactory.GetCategories()
  .success(function(data,status){
    setTimeout(function() {
       $scope.TheArray.push(data);
     }, 2000);    
   })
}

修改

$scope.GetData = function(){
  DataFactory.GetCategories()
  .success(function(data,status){
    $timeout(function () {
                        $scope.ChatHistory.push(JSON.parse(JSON.parse(data)));
                    }, 3000);    
   })
}

1 个答案:

答案 0 :(得分:2)

使用$ timeout而不是setTimeout,它会正常运行。使用setTimeout时,你必须使用$ scope。$ apply来传播你对视图/模型的更改,但是$ timeout为你做了那么神奇,所以你不必担心它。

有关$ timeout here

的更多信息

编辑: 您必须添加$ timeout作为依赖项,如下所示

angular.module('myApp').controller('MyController', function($timeout) {
$scope.GetData = function(){
  DataFactory.GetCategories()
  .success(function(data,status){
    $timeout(function () {
                        $scope.ChatHistory.push(JSON.parse(JSON.parse(data)));
                    }, 3000);    
   })
}
})