ng-repeat 按标题过滤和重复

ng-repeat filter and repeat by heading

尝试将我在 angular 应用程序中进行的搜索返回的一组过滤器分开。当我进行搜索时,我收到 json 并按标题分组。我可以只重复那个特定组中的项目并以这种方式分开吗?原因是每个组都在一个独特的 UI 模块中。因此,有些列表将返回并显示在滑块中,有些将显示在收音机中。

这是:

<div heading="{{filter.name}}" 
     ng-repeat="filter in inventory.filters | filterOptions | orderBy:'name'" 
     is-open="true" show-attrs>
  <h3>{{filter.name | uppercase}}</h3>
    <div ng-repeat="option in filter.options">
      <span ng-click="selectedFilter(filter, option.option, option.id)">
      <a>{{option.option}}{{option.count>0 ? "("+option.count +")": ""}}</a>
      </span>
      <br/>
  </div>
</div>

所以最终我希望能够针对 filter.name.color 并且当它是这个特定的组时让它显示在这种特定类型的 UI.

欢迎提供任何建议或阅读材料链接。

好的,所以我尝试的是这个,它似乎让我可以控制我展示的内容和位置:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div heading="{{filter.name}}" 
     ng-repeat="filter in inventory.filters | filterOptions | orderBy:'name'" 
     is-open="true" show-attrs>
  <div ng-if="filter.name=='blah'" >
    <h3>{{filter.name | uppercase}}</h3>
    <div ng-repeat="option in filter.options">
      <span ng-click="selectedFilter(filter, option.option, option.id)"><a>{{option.option}}{{option.count>0 ? "("+option.count +")": ""}}</a></span>
      <br/>
    </div>
  </div>
  <!--Then I just repeat each ng-if that I want to be available -->
</div>

所以基本上在 div 中的 ng-repeat 调用之后,我正在调用 nf-if 并针对特定的过滤器标题 name/id 以仅获取我需要做的事情.

因此,根据您发布的答案,您似乎只想显示具有特定名称的过滤器。如果是这样,ngFilter 应该能够像这样处理:

| filter:{name: 'blah'}   

(或 {name: something} 如果值在名为 something 的变量中)

完整 HTML:

<div heading="{{filter.name}}" 
     ng-repeat="filter in inventory.filters | filterOptions | orderBy:'name' | filter:{name:'blah'}" 
     is-open="true" show-attrs>
  <h3>{{filter.name | uppercase}}</h3>
  <div ng-repeat="option in filter.options">
    <span ng-click="selectedFilter(filter, option.option, option.id)"><a>{{option.option}}{{option.count>0 ? "("+option.count +")": ""}}</a></span>
    <br/>
  </div>
  <!--Then I just repeat each ng-if that I want to be available -->
</div>

如果你想根据 filter.name.color 进行过滤,你可以使用 | filter:{name.color: 'blue'},但如果对象符号中的那个点不适合你,另一种选择是使用自定义过滤函数:

| filter:hasColor.bind(null, 'blue')

然后在你的控制器中:

$scope.hasColor = function (color, filter) {
    return filter.name && filter.name.color === color;
};