1

我找到了这样的获取数据的示例:

$http.get("/js/data/movies.json")
        .then(function(results){
            //Success
            angular.copy(results.data, _movies); //this is the preferred; instead of $scope.movies = result.data
        }, function(results){
            //Error
        })

这会在请求完成时更新数据并且对服务器的请求延迟一段时间,所以我用超时替换了 $http 请求,但它不起作用,没有更新数据。

setTimeout(function(){
        angular.copy({text : 'test'}, _data);//it doesn't update my layout
    }, 100);
4

1 回答 1

2

Angular 不知道 setTimeout 内部发生的更新。因此,您需要重新应用范围以通知 Angular 更改:

setTimeout(function(){
    $scope.$apply(function(){
        angular.copy({text : 'test'}, _data);
    });
}, 100);

理想情况下,您应该使用 Angular 的 $timeout 来摆脱 $scope.$apply()

$timeout(function(){
    angular.copy({text : 'test'}, _data);
},100);
于 2013-09-17T10:58:45.437 回答