用于动态列的单元过滤器,Angular ui grid

时间:2017-01-02 21:23:49

标签: javascript angularjs arrays angular-ui-grid

我从api调用获取数据数组。根据这些数据,我只需显示特定值。每个数组内部都是嵌套数组事件属性。为了显示这个嵌套数组,我将初始数据数组重新格式化为我的自定义数组。新数组中只有一个限制我必须保存从嵌套数组中获取的所有对象属性。网格显示数据和列定义运行良好,但只有一个我无法解决的问题。网格内的数据显示为对象。我接下来是ui-grid文档,并为每列设置了单元格过滤器,但它不起作用。

那我的错误在哪里?我感谢任何帮助。

这是我的代码和plunker

    var app = angular.module('app', ['ngAnimate', 'ngTouch', 'ui.grid']);

app.controller('MainCtrl', ['$scope', '$http', 'uiGridConstants', '$interval', function ($scope, $http, uiGridConstants, $interval) {

  $http.get('data.json')
    .success(function(response) {

                var array = [];
                    var events = response;

                    angular.forEach(events, function (field) {

                        var custom = field.eventProperties;

                        var tempObj = {};

                        tempObj.id = field.id;
                        tempObj.eventTypeName = field.eventTypeName;
                        tempObj.description = field.description;

                        for (var i = 0; i < custom.length; i++) {
                            tempObj[custom[i].name] = custom[i];
                        }

                        array.push(tempObj);

                    });

                    $scope.gridOptions.data = array;


                      $interval(function () {

                        for (var i = 0; i < $scope.gridOptions.columnDefs.length; i++) {
                            $scope.gridOptions.columnDefs[i].enableSorting = false;
                            $scope.gridOptions.columnDefs[i].cellFilter = 'cellValue';

                        }

                        console.log($scope.gridOptions.columnDefs);

                        $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN);
                        $scope.gridApi.core.refresh();

                    }, 0, 1);
    });


        $scope.gridOptions = {
            rowHeight: 50,
            onRegisterApi: function (gridApi) {
                $scope.gridApi = gridApi;
            }
        }


}])
.filter('cellValue', function() {
  return function(cell) {
   return cell.value
  };
});

1 个答案:

答案 0 :(得分:0)

您已为每个eventProperty设置了整个eventProperty对象(custom [i])。试试这个:

for (var i = 0; i < custom.length; i++) {
    tempObj[custom[i].name] = custom[i].value;
}