2016-02-17 1 views
0

Если у меня 1000 строк с 10-30 столбцами, это прекрасно работает, , но если у меня есть 10 строк с 200 + столбцами, рендеринг занимает от 2 до 3 минут.Более 100 столбцов с рендерингом 10 строк очень худшие в ui-сетке

Через некоторое время данные не видны при горизонтальной прокрутке. В конце концов, страница перестает отвечать на запросы.

Код здесь:

$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 журнал -------------Data received немедленно печатаются, но рендеринг данных занимает слишком много времени.

Как улучшить производительность? Или есть ли какой-либо другой API для огромных строк и 200 + столбцов ?!

+0

Paginate. Если вы хотите, чтобы пользователь испытывал «бесшовную» загрузку, тогда реализуйте ajax, чтобы скрыть разбиение на страницы; данные загружаются как пользовательские свитки. – Marvin

+0

Если вам нужно отобразить много строк без подкачки, я предлагаю вам использовать тайм-аут для рендеринга x строк за раз. И не использовать угловые для этого. Но пейджинг - это, безусловно, лучший ответ ... – n00dl3

ответ

0

В прошлом году мне пришлось иметь дело с подобной вещью и обобщил мои мысли в статье Rendering large data with AngularJS 1.4 (ft. Polymer 0.5).

В основном, I recommend с использованием <iron-list> из полимерных компонентов, хотя для этого требуется некоторое рефакторинг (в зависимости от вашего варианта использования).

Если вы не можете или не хотите использовать <iron-list>, попробуйте как можно больше использовать one-time bindings.

+0

, пожалуйста, скажите мне, что это касается ui-grid, потому что я реализовал в своем проекте. –