2

我有一个 Angular 服务,它可以检索一个相当大的 JSON 文件(近 10,000 行)。

我面临的问题是将数据绑定到前端需要一些时间(如预期的那样)。

样品控制器:

$scope.dataLoaded = false;

serviceReport.getData( function (data) {
    $scope.data1 = data.data1;
    $scope.data2 = data.data2;
    $scope.data3 = data.data3;
    $scope.data4 = data.data4;
    $scope.data5 = data.data5;
    $scope.data6 = data.data6;
    $scope.data7 = data.data7;
    $scope.data8 = data.data8;
    $scope.data9 = data.data9;
    $scope.data10 = data.data10;
    $scope.data11 = data.data11;
    $scope.data12 = data.data12;
    $scope.data13 = data.data13;
    $scope.data14 = data.data14;
    $scope.data15 = data.data15;
    $scope.data16 = data.data16;
    $scope.data17 = data.data17;

    $scope.dataLoaded = true;
});

服务:

app.factory('serviceReport', function($http) {
    return {
        getData: function(value,done) {
            $http.get('data.json', {
                })
            .success(function(data) { 
                done(data);
            })
            .error(function(error) {
                alert('An error occured');
            });
        }
    }
});

我的 HTML 元素上有 ng-cloak,当 dataLoaded = true 时,它​​被删除,因为它表明数据可以显示。

如何改进服务调用/数据绑定?拆分通话有帮助吗?

4

1 回答 1

1

服务器端的解决方案是减少响应的大小,并用更小的响应发出更多的请求。你真的需要一开始的整个反应吗?您必须注意,绑定整个响应会产生许多观察者,这会减慢所有后续摘要的速度。

客户端解决方案是在循环中将响应部分绑定为 $scope.$apply() 甚至 $timeout() 的回调参数。

于 2014-10-13T14:59:12.840 回答