2015-11-26 2 views
0

Мне нужно динамически изменять десятичную точность столбца. Я пробовал разные подходы и не работал.UIGRID: изменение cellFilter в столбцеDefs не очень хорошо обновлено

Я сделал быстрый пример в Plunker, в котором есть кнопка для обмена данными. У них разные данные и разные столбцы: один имеет 3 десятичных знака, а другой 4. Вы можете видеть, что первые строки поддерживают первый формат.

Я использую notifyDataChange в gridApi, но не работает для такого рода изменения:

$scope.gridApi.core.notifyDataChange(this.uiGridConstants.dataChange.ALL); 

Это является проблемой для меня, потому что в моем случае, если я хочу, чтобы одни и те же данные, но динамически изменять десятичное точность столбца.

Кто-нибудь знает, как обновить/перезагрузить эту новую конфигурацию columnDefs? Я бы по-настоящему его обманул!

ответ

0

К сожалению, ни один из обычных методов обновления/обновления сетки не будет работать с этим прецедентом.

Мне удалось заставить его работать, удалив все строки, а затем воссоздавая их после $timeout.

Я обновил ваш плунжер here.

Основной редактирования выглядит следующим образом:

$scope.swapData = function() { 
    $scope.gridOpts.data = []{ 
    $timeout(function() { 
     if (!$scope.isData2) { 
     $scope.gridOpts.data = data2; 
     $scope.gridOpts.columnDefs = columnDefs2; 
     } 
     else { 
     $scope.gridOpts.data = data1; 
     $scope.gridOpts.columnDefs = columnDefs1; 
     } 
     $scope.isData2 = !$scope.isData2; 
    }); 
    }; 
+0

Это работало в моем приложении :) Я думаю uigrid должен справиться с этим, но в любом случае спасибо! – user3421339

0

Похоже, есть answer на пользовательском интерфейсе сетки GitHub репо.

От автора:

cellFilter соединяется с использованием шаблона ячейки, когда шаблон ячейки забирается б/у. Он не обновляется вживую.

С возможным решением:

colDef.cellFilter = 'date:col.filterFormat' 

uiGridApi.core.registerColumnsProcessor(function(columns, rows){ 
    angular.forEach(columns, function(col){ 
    var filterFormat = col.colDef.filterFormat; 
    if (filterFormat){ col.filterFormat = filterFormat; } 
}); 
return rows; 
}, 40); 
Смежные вопросы