Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ngOptions两级对象显示_Javascript_Html_Angularjs_Ng Options - Fatal编程技术网

Javascript ngOptions两级对象显示

Javascript ngOptions两级对象显示,javascript,html,angularjs,ng-options,Javascript,Html,Angularjs,Ng Options,我有这样的结构: model = [ { name: 'name1', items: [ { name: 'subobj1' }, { name: 'subobj2' }] }, { name: 'name2', items: [ { name: 'subobj1' }, { name: 'subobj2' }] }, .... ] 问题是:如何编写ng

我有这样的结构:

model = [
{
  name: 'name1',
  items: [
    {
      name: 'subobj1'
    },
    {
      name: 'subobj2'
    }]
}, 
{
  name: 'name2',
  items: [
    {
      name: 'subobj1'
    },
    {
      name: 'subobj2'
    }]
}, 
    .... 
]
问题是:如何编写ngOptions属性以这样输出此对象

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

子对象1
子对象2>
....

另外-ngRepeat不是一个选项。我必须单独使用ngOptions才能让插件正常工作。

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

阅读更多信息

我使用了一个过滤器: 以及标记:


您可以在第一个选项(顺便说一下,这是组标签)上添加类似于
style=“font-weight:bold;”“
,在第二个选项行添加类似于
style=“padding left:15px;”“
的内容,这是所有第一个选项行的另一个重复。
因此,基本上通过这样做,您只需在您的选择中添加两个级别(请注意,不带
optgroup
标记)。

您尝试过什么吗?到目前为止,我得到的最接近的结果是:“模型中b的b.items按b.name分组”。但是,它不会迭代内部对象,只将其作为CSV进行分析。请解释您的答案,特别是当你为一个已经被接受了一年多的问题添加答案时。
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>
<select>
    <option ng-repeat-start="m in model" ng-bind="m.name"></option>
    <option ng-repeat-end ng-repeat="item in m.items" ng-bind="item.name"></option>
</select>