本文介绍了ngOptions二级对象的显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的结构:

model = [
{
  name: 'name1',
  items: [
    {
      name: 'subobj1'
    },
    {
      name: 'subobj2'
    }]
},
{
  name: 'name2',
  items: [
    {
      name: 'subobj1'
    },
    {
      name: 'subobj2'
    }]
},
    ....
]

问题是:我怎样写ngOptions attrbiute输出这个对象是这样的:

Question is: How do I write ngOptions attrbiute to output this object like this?:

<select>
    <optgroup label="name1">
      <label>subobj1</label>
      <label>subobj2></label>
    </optgroup>
    ....
</group>

此外 - ngRepeat是不是一种选择。我必须为正在使用的工作插件单独做到这一点ngOptions。

Also - ngRepeat is not an option. I have to do this ngOptions alone for plugin being used to work.

推荐答案

ngOptions 不支持多维数组。您必须首先扁平化阵列。

ngOptions doesn't support multi-dimensional arrays. You must flatten your array first.

阅读更多。

app.filter('flatten' , function(){
  return function(array){
    return array.reduce(function(flatten, group){
      group.items.forEach(function(item){
        flatten.push({ group: group.name , name: item.name})
      })
      return flatten;
    },[]);
  }
})

和标记

<select ng-model="select"
        ng-options="item.name
                    group by item.group
                    for item in model | flatten"></select>

这篇关于ngOptions二级对象的显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 13:52