5

我正在研究 ui-grid 和 306_expandable_grid ,我使用了文档中的确切代码,但我面临一个错误问题。

应用程序.js

$http.get('resources/data/title2.json')
    .success(function(data){

        console.log(data);
        console.log(data[0].Data);
        console.log(data.length);
        for(i = 0; i < data[i].length; i++){
           data[i].subGridOptions = {
                  columnDefs: [ 
                    {name:"Title" },
                    {name:"Jan-10" },
                    {name:"Feb-10"},
                    {name:"Mar-10" },
                    {name:"Apr-10" },
                    {name:"May-10" },
                    {name:"Jun-10" },
                    {name:"Jul-10" },
                    {name:"Aug-10" },
                    {name:"Sep-10" },
                    {name:"Oct-10" },
                    {name:"Nov-10" },
                    {name:"Dec-10" }
                ],
              data: data[i].Data
          }
      }
        // $scope.subGridOptions.data = data;
        $scope.gridOptions.data = data;
        // $scope.title = data[0].Title;
    });

externalHtmlFile.html

<div ui-grid="row.entity.subGridOptions" style="height:150px;"></div>

这是我坚持的错误

 TypeError: Cannot read property 'data' of undefined
    at new <anonymous> (http://localhost/ng-Grid/resources/scripts/ui-grid-unstable.js:2883:41)
    at Object.e [as invoke] (http://localhost/ng-Grid/resources/scripts/angular.min.js:36:456)
    at E.instance (http://localhost/ng-Grid/resources/scripts/angular.min.js:75:118)
    at http://localhost/ng-Grid/resources/scripts/angular.min.js:58:276
    at r (http://localhost/ng-Grid/resources/scripts/angular.min.js:7:408)
    at M (http://localhost/ng-Grid/resources/scripts/angular.min.js:58:260)
    at http://localhost/ng-Grid/resources/scripts/angular.min.js:65:412
    at http://localhost/ng-Grid/resources/scripts/angular.min.js:109:276
    at h.$eval (http://localhost/ng-Grid/resources/scripts/angular.min.js:123:139)
    at h.$digest (http://localhost/ng-Grid/resources/scripts/angular.min.js:120:220)

当我单击加号图标时,出现错误...我找不到我能理解的解决方案。请帮忙

4

1 回答 1

10

首先,确保在回调$scope.gridOptions之外进行初始化。$http.get success仅在回调中添加$scope.gridOptions.data[i].subGridOptionsto 。参考$scope.gridOptionssuccess

您无法在成功调用中定义网格选项。您需要在控制器的范围内定义它们,然后从成功调用中设置数据或列定义等。

其次,确保网格/页面的控制器没有任何类型的初始化参数相关重定向。由于页面上的以下代码,我遇到了相同的错误消息:

if (typeof clientcode === 'string' && clientcode !== '') {

    var payload = {
        clientcode : storedClientcode
    }

} else {

    $location.path('/');

}

这里的想法是检查是否storedClientcode由调用页面(通过共享的应用程序根服务)提供,如果没有,则重定向到应用程序主页。但是ui-grid 显然对其 on 页面进行了单独的子调用,并且这些子调用当然不会提供我在代码中寻找的数据,因此重定向发生在这些调用的幕后。没有产生错误(除了您也看到的),并且网格中没有显示任何数据。这花了我一些时间来弄清楚(我对 AngularJS 还很陌生,这是我第一次使用 ui-grid)。希望这会对某人有所帮助,即使它不能解决这个问题。

于 2014-10-30T23:48:18.630 回答