ng-repeat过滤器并按标题重复

时间:2015-01-10 20:05:19

标签: angularjs angularjs-ng-repeat angular-filters

尝试将我在角度应用中执行的搜索返回的一组过滤器分开。当我进行搜索时,我收到了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中时。

对阅读的任何建议或链接表示赞赏。

2 个答案:

答案 0 :(得分:1)

因此,根据您发布的答案,您想要做的只是显示具有特定名称的过滤器。如果是这样,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;
};

答案 1 :(得分:0)

好的,所以我试过的就是这个,它似乎让我控制了我所展示的内容以及在哪里:

<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并且针对特定的过滤器标题名称/ id来获取我需要做的事情。