ui-grid无法显示数据,b.forEach不是函数

时间:2016-05-23 23:02:13

标签: javascript angularjs angular-ui-grid

我定义了列,我定义了组,我从请求中获取数据,但是在构建网格时它在某处失败了?

 $scope.gridOptions = {
                enableFiltering: true,
                treeRowHeaderAlwaysVisible: false,
                columnDefs: [
                    { name: 'suplierName', grouping: { groupPriority: 0 }, sort: { priority: 0, direction: 'desc' }, width: '30%', cellTemplate: '<div><div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents" title="TOOLTIP">{{COL_FIELD CUSTOM_FILTERS}}</div></div>' },
                    { name: 'InvoiceNumber', width: '25%' },
                    { name: 'Description', width: '25%' },
                    { name: 'InvoiceDate', width: '40%', cellFilter: 'date', type: 'date' },
                    { name: 'CurrencyDate', width: '40%', cellFilter: 'date', type: 'date' },
                    { name: 'InvoiceTotal', width: '25%', cellFilter: 'number', type: 'number'},
                    { name: 'InvoiceNotPayed', width: '25%', cellFilter: 'number', type: 'number'},
                    { name: 'TotalPayment', width: '25%', cellFilter: 'number', type: 'number'}

                ],
                onRegisterApi: function( gridApi ) {
                    $scope.gridApi = gridApi;
                }
            };



            $scope.gridOptions = {
            };

            $http.get('http://11.141.111.111/server/api/reports/unpayedInvoicesReport/organization/a255f922-6a4b-11e4-a7ff-53ee038745a3/fromAccount/62386806-fb07-4821-a83b-eab0cc987778/toAccount/62386806-fb07-4821-a83b-eab0cc987778?dateTo=31%2F01%2F2015')
                .success(function(data)
                {

                    console.log(data)

                    for ( var i = 0; i < data.length; i++ ){
                        //var registeredDate = new Date( data[i].registered );
                        data[i].suplierName = data[i].suplierName;
                        data[i].InvoiceNumber = Number( data[i].InvoiceNumber .slice(1).replace(/,/,'') );
                        data[i].Description = data[i].Opis;
                        data[i].InvoiceDate = $filter('date')(new Date(data[i].InvoiceDate), 'dd/MM/yyyy')
                        data[i].CurrencyDate = $filter('date')(new Date(data[i].CurrencyDate), 'dd/MM/yyyy')
                        data[i].InvoiceTotal = Number( data[i].InvoiceTotal.slice(1).replace(/,/,'') );
                        data[i].InvoiceNotPayed = Number( data[i].InvoiceNotPayed.slice(1).replace(/,/,'') );
                        data[i].TotalPayment = Number( data[i].TotalPayment.slice(1).replace(/,/,'') );

                    }
                    $scope.gridOptions.data = data;

                });



            $scope.toggleRow = function( rowNum ){
                $scope.gridApi.treeBase.toggleRowTreeState($scope.gridApi.grid.renderContainers.body.visibleRowCache[0]);            };

            $scope.changeGrouping = function() {
                $scope.gridApi.grouping.clearGrouping();
                $scope.gridApi.grouping.groupColumn('age');
                $scope.gridApi.grouping.aggregateColumn('state', uiGridGroupingConstants.aggregation.COUNT);
            };

            $scope.getAggregates = function() {
                var aggregatesTree = [];
                var gender

                var recursiveExtract = function( treeChildren ) {
                    return treeChildren.map( function( node ) {
                        var newNode = {};
                        angular.forEach(node.row.entity, function( attributeCol ) {
                            if( typeof(attributeCol.groupVal) !== 'undefined' ) {
                                newNode.groupVal = attributeCol.groupVal;
                                newNode.aggVal = attributeCol.value;
                            }
                        });
                        newNode.otherAggregations = node.aggregations.map( function( aggregation ) {
                            return { colName: aggregation.col.name, value: aggregation.value, type: aggregation.type };
                        });
                        if( node.children ) {
                            newNode.children = recursiveExtract( node.children );
                        }
                        return newNode;
                    });
                }

                aggregatesTree = recursiveExtract( $scope.gridApi.grid.treeBase.tree );

                console.log(aggregatesTree);
            };
        }])

我从服务器获取数据,但后来我收到以下错误:

angular.js:11607 TypeError: b.forEach is not a function
    at p.modifyRows (ui-grid.min.js:7)
    at ui-grid.min.js:7
    at processQueue (angular.js:13189)
    at angular.js:13205
    at Scope.$eval (angular.js:14401)
    at Scope.$digest (angular.js:14217)
    at Scope.$apply (angular.js:14506)
    at done (angular.js:9659)
    at completeRequest (angular.js:9849)
    at XMLHttpRequest.requestLoaded (angular.js:9790)

我是Angular的新手,所以如果我得到一些建议会很好:) 第一次尝试实现UI网格,我真的需要我的项目中的功能:/ 谢谢!

1 个答案:

答案 0 :(得分:1)

您需要从代码段中删除此行(~24,25)。

$scope.gridOptions = {
};

您已经定义了$ scope.gridOptions,因此之前设置的所有内容都已被无效。