【问题标题】:AngularJs : using ag-grid's $scope.grid.api.setRowData() does not workAngularJs:使用 ag-grid 的 $scope.grid.api.setRowData() 不起作用
【发布时间】:2020-07-19 23:23:24
【问题描述】:

所以,我分叉了this simple ag-grid demo Plunker,分叉的版本是here

唯一的变化是旧代码为ag-grid 静态分配行数据,而我的fork 尝试使用API​​ 动态分配i。 一世 老:

var rowData = [
    {make: "Toyota", model: "Celica", price: 35000},
    {make: "Ford", model: "Mondeo", price: 32000},
    {make: "Porsche", model: "Boxter", price: 72000}
];

// let the grid know which columns and what data to use
var gridOptions = {
    columnDefs: columnDefs,
    rowData: rowData,
    onGridReady: function () {
        gridOptions.api.sizeColumnsToFit();
    }
};

新:

  var rowData = [
    {
      make: "Toyota",
      model: "Celica",
      price: 35000
    },
    {
      make: "Ford",
      model: "Mondeo",
      price: 32000
    },
    {
      make: "Porsche",
      model: "Boxter",
      price: 72000
    }
  ];

  $scope.grid = {
    columnDefs: columnDefs,
    rowData: [],
    rowSelection: 'single'
  };

$scope.grid.api.setRowData(rowData);

在我的 Plunker 中以及在 localhost 上尝试此操作时,ag-grid 都不会出现。

我做错了什么?


[更新] 我想在用户每次单击按钮时从服务器获取数据,而不仅仅是在网格准备好时,并使用它的 api 分配网格的 rowData。


[更新] 我刚刚在 localhost 上注意到,虽然 $scope.gridOptions 已定义,但 $scope.gridOptions.api 未定义

【问题讨论】:

    标签: angularjs ag-grid


    【解决方案1】:

    $scope 设置后不会立即有 grid.api 数据。您必须在 $scope.grid 的 onGridReady 函数中设置数据,如下所示。 https://plnkr.co/edit/qgPae2iGIl1A9i8O?preview

    $scope.grid = {
      columnDefs: columnDefs,
      rowData: [],
      rowSelection: 'single',
      onGridReady: function() {
        $scope.grid.api.setRowData(rowData);
      }
    };

    【讨论】:

    • 这就是网格的 API setRowData() 函数的用途(而且更灵活)? Plunker 非常简化,BUT,我想在用户每次单击按钮时从服务器获取数据,而不仅仅是在网格准备好时。你能帮忙吗?谢谢
    【解决方案2】:

    好的,我解决了。这是静态和动态网格之间的区别。见this Plunker

    将 HTML 更改为 <div id="myGrid" class="ag-fresh" style="height: 100px;"></div>(删除 ag-grid="grid"),然后在控制器中:

    var currentCandidatesGridDiv = document.querySelector('#myGrid');
    new agGrid.Grid(currentCandidatesGridDiv, $scope.grid);
    
    $scope.grid.api.setRowData(rowData);
    

    我要求这个帮助a previous question,并且帮助了自己一点 - 只是希望我也帮助了其他人:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-09
      • 2019-01-21
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 2018-09-19
      • 1970-01-01
      相关资源
      最近更新 更多