我需要在ui-grid中显示一个字符串数组。单列,每行一个字符串

时间:2016-03-10 19:10:10

标签: javascript arrays angularjs string ng-grid

我正在调用的REST API以下列格式返回一个数组:

["a", "b", "c", "d"]

我的ui-grid需要在一列中显示这些数据条目,每行一个。

我有:

  $scope.items = [];

  $scope.gridOptions = {
      data: 'items' 
  };

我的$ http通话中的成功回调函数只是将$scope.items设置为response.data

这适用于作为JSON对象数组接收的其他方法中的数据,但在这种情况下,我只是获取字符串,我在控制台中得到以下错误两次:

Error: colDef.name or colDef.field property is required

Wat do ??

2 个答案:

答案 0 :(得分:2)

我通过创建这个实用程序函数来实现它:

function convertArrayOfStringsToGridFriendlyJSON(colName, arr) {
  var out = [];
  arr.forEach(function(entry){
    var obj = {};
    obj[colName] = entry;
    out.push(obj);
  });
  return out;
};

然后使用我的列名和传入的数组将$scope.items设置为此函数的输出。

答案 1 :(得分:0)

按照此 - > binding to 1D array

  

UI-Grid也可以绑定到一维基元数组 - 在这种情况下,使用uiGridConstants.ENTITY_BINDING将使用数据数组中的整个条目作为单元格的值而不是其中的字段。如果数据是字符串数组,或者单元格过滤器需要访问每个行对象中的多个字段,这将非常有用。

实施例:Check this plnkr.

app.controller('OneDimensionCtrl', ['$scope', 'uiGridConstants', function ($scope, uiGridConstants) {

$scope.gridOptions = {
        enableSorting: true,
        columnDefs: [
          { name:'Name', field: uiGridConstants.ENTITY_BINDING }
        ],
        data : [
          "John Rogers",
          "David Michaels",
          "Andrew Johnson",
          "Donald McDonald"
        ]
      };
}]);