AngularJS 和 Typeahead:根据所选值访问数组中的数组

AngularJS and Typeahead : Accessing an array within an array based on a selected value

我是 AngularJS 领域的新手,希望得到帮助解决这个问题: 在我的控制器中,我有以下 list/object:

$scope.languageModel = {
        brands: [{ id: 1, name: 'ALGS' }, { id: 2, name: 'BLVT' }],
        commodities: [
            {
                id: 1,
                name: 'Apples',
                varieties: [{ id: 1, name: 'GS' }, { id: 2, name: 'GX' }],
                sizes: [{ id: 1, name: 'S' }, { id: 2, name: 'M' }],
                qualities: [{ id: 1, name: 'LQ' }, { id: 2, name: 'GQ' }]
            }, 
            {
                id: 2,
                name: 'Oranges',
                varieties: [{ id: 1, name: 'OR' }, { id: 2, name: 'ZO' }],
                sizes: [{ id: 1, name: 'S' }, { id: 2, name: 'M' }],
                qualities: [{ id: 1, name: 'LQ' }, { id: 2, name: 'GQ' }]
            }
        ]
    }

languageModel 用作从中填充数据的对象:

  <th>
     <input id="brand"
       type="text"
       ng-model="selected.brand"
       ng-required="true"
       placeholder="Brand"
       uib-typeahead="brand.name for brand in languageModel.brands"
       class="form-control">
  </th>
  <th>
       <input id="commodity"
       type="text"
       ng-model="selected.commodities"
       ng-required="true"
       placeholder="Commodity"
       uib-typeahead="commodities.name for commodities in 
            languageModel.commodities"
       class="form-control">
  </th>
  <th>
      <input id="variety"
      type="text"
      ng-model="selected.variety"
      ng-required="true"
      placeholder="Variety"
      uib-typeahead="varieties.name for varieties in 
           getAttributeType(selected.commodity.varieties, 'varieties')"
      class="form-control">
  </th>
  <th>
     <input id="size"
      type="text"
      ng-model="selected.size"
      ng-required="true"
      placeholder="Size"
      uib-typeahead="size.name for sizes in 
           getAttributeType(selected.commodity, 'size')"
      typeahead-on-select="setItem('size')"
      class="form-control">
  </th>

这些当然位于 table。上面提到的所有代码都是我目前拥有的。我想知道的是如何确保#variety(同样适用于#size)由所选的#commodity填充。

例如,如果我选择苹果作为我的#commodity,那么#variety 的列将由苹果商品列表中的品种填充。

#brands 和#commodity 填充正常并正常工作,但是 getAttributeType() 似乎不起作用,当我 运行 应用程序时,#commodity 后面的框基本上被视为正常文本框。

应该这样:

 uib-typeahead="size.name for sizes in 
       getAttributeType(selected.commodity, 'size')"

是:

 uib-typeahead="size.name for sizes in 
       getAttributeType(selected.commodity.sizes, 'size')"

如果这不起作用,你能post一个 plunker 或 codepen 吗?