将字符串数组转换为对象?

时间:2014-04-10 19:27:53

标签: javascript arrays angularjs ng-grid

我有一个数组,我试图使用像这样的ng-grid显示:

http://plnkr.co/edit/G33IlPCNAdh1jmNTtVNO?p=preview

我知道ng-grid不能将field部分作为数组 - 它需要一个JSON对象。我也理解,在上面提到我的plunkr时,如果您取消注释$scope.test2并将$scope.test的所有实例替换为$scope.test2,则信息将显示$scope.test2内的所有数据根据需要,而不是我在plunkr的当前状态中获得的undefined消息。

如何以编程方式将$scope.test更改为$scope.test2?我只想将数组的格式更改为仅$scope.test2 ng-grid。可能吗?如果有人能提供帮助那就太棒了。

编辑:

基本上我想改变

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

看起来像

$scope.test2 = [{name:['blah', 'blah2']}]; //name can be changed to anything
//name just has to specify the name of the array inside this object.

这可能吗?

2 个答案:

答案 0 :(得分:0)

只是做:

$scope.test2 = [{name: $scope.test}];

$scope.test是一个对象引用,因此$scope.test中的任何更改都会反映在$scope.test2[0].name

答案 1 :(得分:0)

核心问题是你需要一个对象数组,每个对象代表一行,这意味着你希望test看起来像这样:

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

要以编程方式执行此操作,您可以执行以下操作:

$scope.test = [ 'blah', 'blah2' ];
$scope.testObjects = [];
$scope.test.forEach( function( val ){
  $scope.testObjects.push( { test: val } );
});
$scope.gridOptions = { 
  data: 'testObjects',
  columnDefs: [
    {field: 'test', displayName: 'Test'},
  ]
};

摆脱了对过滤器的需求。请参阅my revised plunker