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

时间:2018-01-26 08:34:34

标签: arrays angularjs angular-ui-typeahead

我是关于AngularJS的新领域,并希望帮助解决这个问题: 在我的控制器中,我有以下列表/对象:

  <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>

languageModel用作填充数据的对象:

{{1}}

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

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

#brands和#commodity填充正常并按预期工作,但getAttributeType()似乎无法正常工作,当我运行应用时,#commodity后面的框基本上被视为普通文本框。

1 个答案:

答案 0 :(得分:1)

应该这样:

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

是:

@Configuration
public class SpringDataRestConfiguration extends RepositoryRestConfigurerAdapter  {

    @Override
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.exposeIdsFor(Resource.class);
    }
}

如果这不起作用你可以张贴一个plunker或codepen吗?