【问题标题】:ag-grid Cannot read property 'setRowData' because gridOptions.api undefinedag-grid 无法读取属性“setRowData”,因为 gridOptions.api 未定义
【发布时间】:2017-03-21 09:36:41
【问题描述】:

我有一个在项目中工作的 ag-grid。但是现在当我将相同的内容移植到另一个页面时,我遇到了一些错误.. 我试图避免其间的 http 调用,并直接尝试通过

设置 ROW 数据
 $scope.gridOptions.api.setRowData(RowDatas);

但错误是“TypeError: Cannot read property 'setRowData' of undefined”

所以在调试时我意识到 api 是 Undefined 。这是我的完整代码。请检查我错过了什么..

<head>
<script src="js/angular_1_3_8.js"></script>
<script src="js/angular-filter.js"></script>
<script src="workbench/agGrid/dist/ag-grid.js?ignore=notused34"></script>
<script>
    agGrid.initialiseAgGridWithAngular1(angular);
    var app = angular.module("workbenchApp", ['angular.filter',"agGrid"]);
    app.controller("workBenchCtrl", function ($scope, $http, $filter) {

    var columnDefs = [
    {headerName: "Name", field: "Name"},
    {headerName: "Cr", field: "dc"},
    {headerName: "Ac", field: "da"},
    {headerName: "Mo", field: "dm"},

];

var RowDatas=[{"Name": "SUHDLOG.DAT", "dc": "1970-01-01 05:30:00", "da": "2002-12-27 00:00:00", "dm": "2002-12-27 09:51:22"},
{ "Name": "BOOTLOG.PRV", "dc": "1970-01-01 05:30:00", "da": "2005-04-01 00:00:00", "dm": "2005-04-01 15:13:30"},
{ "Name": "FRUNLOG.TXT", "dc": "1970-01-01 05:30:00", "da": "2002-12-27 00:00:00", "dm": "2002-12-27 09:52:56"},
{ "Name": "COMMAND.COM", "dc": "1970-01-01 05:30:00", "da": "2002-12-27 00:00:00", "dm": "1999-04-23 22:22:00"},
{ "Name": "BOOTLOG.TXT", "dc": "1970-01-01 05:30:00", "da": "2005-04-02 00:00:00", "dm": "2005-04-02 14:38:00"},
{ "Name": "DETLOG.TXT", "dc": "1970-01-01 05:30:00", "da": "2002-12-28 00:00:00", "dm": "2002-12-28 09:56:02"},
{ "Name": "CONFIG.SYS", "dc": "1970-01-01 05:30:00", "da": "2005-06-16 00:00:00", "dm": "2003-07-03 18:39:50"},
{ "Name": "DBLSPACE.BIN", "dc": "1970-01-01 05:30:00", "da": "2002-12-27 00:00:00", "dm": "1999-04-23 22:22:00"},
{ "Name": "MSDOS.SYS", "dc": "1970-01-01 05:30:00", "da": "2003-07-03 00:00:00", "dm": "2002-12-27 10:01:58"},
{ "Name": "DRVSPACE.BIN", "dc": "1970-01-01 05:30:00", "da": "2002-12-27 00:00:00", "dm": "1999-04-23 22:22:00"},
{ "Name": "MSDOS.---", "dc": "1970-01-01 05:30:00", "da": "2002-12-27 00:00:00", "dm": "2002-12-27 09:46:28"},
{ "Name": "SETUPLOG.TXT", "dc": "1970-01-01 05:30:00", "da": "2002-12-27 00:00:00", "dm": "2002-12-27 10:04:12"},
{ "Name": "WSOCK32.DLL", "dc": "1970-01-01 05:30:00", "da": "2005-06-16 00:00:00", "dm": "2002-12-27 09:47:10"},
{ "Name": "CFGWIZ.DLL", "dc": "1970-01-01 05:30:00", "da": "2005-02-26 00:00:00", "dm": "2002-12-27 09:47:12"},
];

$scope.gridOptions = {
        angularCompileHeaders: true,
        columnDefs: columnDefs,
        rowData:[{"Name": "SUHDLOG.DAT", "dc": "1970-01-01 05:30:00", "da": "2002-12-27 00:00:00", "dm": "2002-12-27 09:51:22"}]
                };

    /*
    $http.get('FileList.json').success(function (response) {
    $scope.TData = response;
    DateArray=$scope.TData.Files;
    $scope.gridOptions.api.setRowData(DateArray);


    });
    */
    $scope.gridOptions.api.setRowData(RowDatas);

    });
</script>
</head>
<body>
<div ng-app="workbenchApp">
    <div ng-controller="workBenchCtrl">
        <div ag-grid="gridOptions" class="ag-blue" style="height: 500px;"></div>
    </div>
</div>
</body>

【问题讨论】:

    标签: ag-grid


    【解决方案1】:

    同样的问题似乎是由于方法被调用两次引起的。在第一次定义api之前,使得内部代码会崩溃。在第二遍中,定义了 api。

    OnGridReady 对我不起作用,使用 vue 的 nextTick 或超时也不起作用。

    最终通过使用 if 解决了它:

    if (this.gridOptions.api) {
        this.gridOptions.api.setFilterModel(null);
    }
    

    这允许它第一次越过它而不崩溃,然后第二次抓住它并完成工作。

    (希望这对某人有所帮助。让我很沮丧。)

    【讨论】:

      【解决方案2】:

      只有在网格初始化后,网格 api 才会准备就绪。您可以为此使用 gridReady 事件:

      $scope.gridOptions = {
          onGridReady: function() {
              $scope.gridOptions.api.setRowData(...your data);
          }
      

      【讨论】:

        【解决方案3】:

        试试这个:

         onGridReady: function(params) {
                    params.api.setRowData(...your data);
                }
        

        【讨论】:

          猜你喜欢
          • 2020-11-18
          • 2017-12-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-16
          • 2020-08-31
          • 2019-04-03
          • 2019-07-11
          • 2017-07-30
          相关资源
          最近更新 更多