如何使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);
我不认为这是setTimeout或标准方式$超时的问题。至少setTimeout在2秒后执行。 – user824624 2014-09-01 13:10:17
你真的尝试过吗? – foxx 2014-09-02 15:54:58