Angular UI Grid:如何使用来自数据库/后端的真实数据填充下拉过滤器

时间:2019-03-21 22:50:36

标签: angularjs angular-ui-grid ui-grid

我一直在努力1天以上,试图找到一种解决方案,以用后端数据预填充angular-ui-grid下拉菜单。是的,我已经看到很多类似的问题,但是没有一个人谈论用后端的真实数据填充selectOption。

它可以与这样的预定义数组配合使用:$scope.tiposArquivoSelecionados = [{ value: 1, label: 'First'}, { value: 2, label: 'Second'}, { value: 3, label: 'Third'}];

enter image description here

但是当我尝试使用从后端收集的数据填充selectOption时,不会显示selectOption。看看:

enter image description here

成功收集了数据,成功渲染了网格,这让我认为这是一个时序问题。

以下是我尝试解决所有时序问题的一些变通方法的列表:

  • 收集数据后刷新网格;
  • 将columnDefs放入服务成功回调中
  • 仅在array.length> 0时在.html中添加ng-if才能显示网格

他们都没有工作= /


selectOptions数组声明:

$scope.tiposArquivoGridSelectOptions = [];

来自GridOptions.columnDefs的代码:

{
  field: 'controleArquivoId',
  name: 'Tipo de Arquivo',
  cellClass: 'ui-grid-cell-padding',
  enableFiltering: true,
  enableSorting: true,
  enableHiding: true,
  filter: {
    type: uiGridConstants.filter.SELECT,
    selectOptions: $scope.tiposArquivoGridSelectOptions,
  },
  sort: {
    direction: uiGridConstants.ASC,
    priority: 3
  }
},

在我的控制器中,我具有init()方法,该方法调用服务以从后端收集数据并填充selectOption数组。

AutorizacoesReenvioService.listarTiposArquivoPorAno(moment().year()).then(
  function (success) {
    var responseData = success.data;

    responseData.forEach(function(item) {
      $scope.tiposArquivoGridSelectOptions.push(
        {
          value: item.id,
          label: item.nomeArquivo
        }
      );
    });

    $scope.gridApi.core.refresh();
  },
  function (error) {
    console.error(success.data);
  }
);

0 个答案:

没有答案