如何使angular.js显示数据对象更新后的更新

问题描述:

我正在通过从http服务加载它们来初始化angular.js中的对象数组。如何使angular.js显示数据对象更新后的更新

<ul class="order-list" ng-repeat="catalog in catalogs"> 
       <li style="width:34%;" ng-show="{{catalog.ordered}}" ><span class="fa fa-money"></span> ORDERED </li> 
    </ul> 

    $scope.catalogs = []; 
    $http({ 
     url: baseURL + "/orders/"+order.date + "?code="+order.code, 
     method: "DELETE", 
    }).success(function (data, status, headers, config) { 
    $scope.catalogs = data; 
      // first way 
      _.each($scope.catalogs, function(catalog){ 
       console.log(catalog); 
       catalog.ordered = true; 
      }) 
      // second way 
      setTimeout(function(){ 
      console.log("settimeout"); 
      _.each($scope.catalogs, function(catalog){ 
       console.log(catalog); 
       catalog.ordered = true; 
      }) 
      $scope.$apply(); 
      }, 2000) 
    }) 

如代码,如果我用第一种方式,那么HTML会立即显示更新,但是,如果我通过延迟三秒钟后的更新中使用的第二种方式,那么HTML不显示任何更新,甚至我用$ scope。$ apply();它只是给了我 错误的错误:[$ rootScope:inprog] http://errors.angularjs.org/1.3.0-beta.17/ $ rootScope/inprog P0 =%24digest

如何使用$timeout代替setTimeout()

您是否尝试过更新办?

$timeout(function() { 
    _.each($scope.catalogs, function(catalog) { 
    catalog.ordered = true; 
    }); 
}, 2000); 
+0

我不认为这是setTimeout或标准方式$超时的问题。至少setTimeout在2秒后执行。 – user824624 2014-09-01 13:10:17

+0

你真的尝试过吗? – foxx 2014-09-02 15:54:58