ui-grid динамический cellFilter

Используя ui-grid, я хотел бы иметь столбец с динамическим cellFilter, чтобы его можно было обновлять, например, с "номера" на "валюту". Я попытался изменить параметр cellFilter из столбца, но он не отражается в сетке. Я также пытался ссылаться на cellFilter на переменную типа cellFilter: col.colDef.filter, но получаю ошибку

Error: [$parse:syntax] Syntax Error: Token '.' is an unexpected token at column 33 of the expression [grid.getCellValue(row, col) |col.colDef.filterFormat] starting at [.colDef.filterFormat].

plunkr: http://plnkr.co/edit/KhR4kbLAT61vAm6AlSCr?p=preview Есть предложения?

1 ответ

Решение

Это должно сделать это для вас, небольшой твик, который использует angular.copy():

var app = angular.module('app', ['ui.grid']);
app.controller('MainCtrl', ['$scope', '$http', function($scope, $http) {
  $scope.gridOptions1 = {
    enableFiltering: true,
    columnDefs: [{
      field: 'age',
      cellFilter: 'currency'
    }]
  };

  $scope.gridOptions = angular.copy($scope.gridOptions1);
  $http.get('//cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json')
    .success(function(data) {
      $scope.gridOptions.data = data;
    });

  $scope.updateFilter = function() {
    $scope.gridOptions1.columnDefs[0].cellFilter = 'number';
    $scope.gridOptions = angular.copy($scope.gridOptions1);
  };
}]);

Вот рабочий Плункер, http://plnkr.co/edit/p3pBKvFH3pJcpps02sN9?p=preview.

Позвольте мне знать, если вам нужно что-нибудь еще. Рад помочь в дальнейшем.

Другие вопросы по тегам