数组数据显示为未定义?

时间:2014-03-14 22:19:05

标签: javascript arrays angularjs filter undefined

我有一个声明如下的数组:

$scope.test=['blah', 'blah2'];

我想用ng-grid作为测试来显示数据。我做了以下事情:

$scope.sourceGridOptionsApprovers = {
    plugins: [gridLayoutPlugin],
    data : 'test',
    columnDefs: [
        {field: 'test', displayName: 'Approvers', width:'35%',
            cellFilter: 'stringArrayFilter'}
    ]
};

我想过滤数组,这样我就可以将测试内容显示在ng-grid中的一个列中。我将以下内容添加到我的角度控制器中:

.filter('stringArrayFilter', function(){
        return function(myArray) {
            //console.log(myArray);
            return myArray.join(', ');
        };
    });

但是当我尝试在过滤后显示数组的内容时,所有内容都显示为未定义,我认为这可能是我将数组传入过滤器的方式,但我并不完全当然。任何帮助将不胜感激。

以下是我的例子:http://plnkr.co/edit/Ba7hoGFhI7cWWaD3itZx?p=preview

1 个答案:

答案 0 :(得分:0)

首先,我认为ngGrid严格要求具有属性的json对象。如果没有属性,则单元格无法与特定数据匹配,因此单元格的数据为“undefined”=>这会导致“未定义”错误消息。

所以你的数据需要像:

$scope.test=[{name: 'blah'}, {name: 'blah2'}];

其次,每行/单元格应用cellfilter,而不是整个数组。使用示例数据,单个单元格数据不包含任何数组,因此您将收到“无方法连接”错误消息。

使用过滤器时,数据的结构应该是这样的:

$scope.test = [{name: ['blah', 'blah2']}, {name: ['blah3', 'blah4']}];

以下是一个完整的工作示例:

http://plnkr.co/edit/6EsriMwBNILKzwk3JIR1?p=preview