Javascript 100+;在ui网格中,具有10行的列的渲染性能最差

Javascript 100+;在ui网格中,具有10行的列的渲染性能最差,javascript,jquery,angularjs,node.js,angular-ui-grid,Javascript,Jquery,Angularjs,Node.js,Angular Ui Grid,如果我有1000多行和10到30列,它就可以正常工作, 但是如果我有10行200多列,渲染需要2到3分钟 一段时间后,水平滚动时数据不可见。 最终,页面变得没有响应 代码如下: $http.post($scope.url + "/getPagingRecordImportedTable", { dbname : $stateParams.dbname, tableName : tablename, pageNumber : 1 }).success(function(r

如果我有1000多行和10到30列,它就可以正常工作, 但是如果我有10行200多列,渲染需要2到3分钟

一段时间后,水平滚动时数据不可见。 最终,页面变得没有响应

代码如下:

$http.post($scope.url + "/getPagingRecordImportedTable", {
    dbname : $stateParams.dbname,
    tableName : tablename,
    pageNumber : 1 
}).success(function(response) {
    $scope.names = response.records;
    $scope.mdata = response.metadata;
    $scope.gridOptions.data = response.records;
    var columnsize = 0;
    for (var obj in $scope.mdata) {
        if ($scope.mdata[obj]['columnsize'] > 20) {
            columnsize = 20;
        } else {
            columnsize = $scope.mdata[obj]['columnsize'];
        }
        $scope.columns.push({
            field : $scope.mdata[obj]['columnname'],
            width : columnsize
        });
    }
    console.log("-----------Data received");
})
触发http请求后,会立即打印收到的
------数据
日志,但渲染数据会花费太多时间


如何提高绩效?或者有没有其他用于大行和200多列的API

去年我不得不处理一件类似的事情,并在一篇文章中总结了我的想法

基本上,使用聚合物组件,尽管它需要一些重构(取决于您的用例)


如果您不能或不想使用
请尝试尽可能多地使用。

我可以通过让观察者对行和列分别触发来解决此问题。 我之前在一起更新gridOptions.colDefs和gridOptions.data。然后将其更改为:

  • gridOptions.colDefs=新设置
  • $timeout(function(){gridOptions.data=newdata…},500,true)
    它就像魅力一样。显然,可以通过点击并测试数据和列的长度来调整超时值。

    Paginate。如果您希望用户体验“无缝”加载,那么实现ajax以隐藏分页;数据在用户滚动时加载。如果您必须在不分页的情况下显示那么多行,我建议您使用超时一次渲染x行。而不是用angular来做这件事。但分页显然是最好的答案…请告诉我与ui网格相关的内容,因为我在我的项目中实现了它。