双循环获得Ng选项

时间:2014-07-21 08:14:54

标签: angularjs angularjs-ng-repeat ng-options

我希望将所有任务命名为任务ID,其中任务数组存储在组数组中。 我试图在angularJS的ng-options指令中得到它。以下是http://jsfiddle.net/753YB/16/链接,可供快速修改。 提前致谢!我知道在单个数组中它是task.Id as task.Name for task in Tasks但我的任务嵌套在组中,所以我需要所有组中的任务。

$scope.Groups = [{
        Name: 'a1',
        Id: 1,
       Tasks:[{Name: 'Some Name' Id: 1},{Name: 'Some Name 2' Id: 2}]
    }, {
        Name: 'c2',
        Id: 2,
        Tasks:[{Name: 'Some Name 3' Id: 3},{Name: 'Some Name 4' Id: 4}]
    },
       {
        Name: 'c2',
        Id: 3,
        Tasks:[{Name: 'Some Name 3' Id: 5},{Name: 'Some Name 4' Id: 6}]
    }];

1 个答案:

答案 0 :(得分:3)

您可以使用以下功能展平数据结构:

function flattenArray(array, fn)  {
   var output = [];
   for(var i = 0; i < array.length; ++i) {
      var result = fn(array[i]);
      if (result) 
         output = output.concat(result);
   }
   return output;
}

通过传递一个数组和一个项目回调来调用该函数。回调返回子数组。

$scope.Groups = flattenArray(groups, function(item) { 
     return item.Tasks;
}); 

Demo Fiddle