如果类匹配字符串,则AngularJS ng-repeat过滤器

时间:2014-08-27 08:59:59

标签: angularjs ng-repeat

我有两个选择字段,我需要根据第一个字段的选择过滤第二个字段中的选项,我需要通过类名来完成。例如,这些是选择框:

<select ng-model="type">
    <option val="short">Short</option>
    <option val="long">Long</option>
</select>

<select>
    <option ng-repeat="item in items" ng-class="{'short': item.short, 'long:' item.long}">{{item.name}}</option>
</select>

ng-repeat将生成此类HTML:

<select>
    <option class="short">Foo</option>
    <option class="short long">Bar</option>
    <option class="long">Foobar</option>
</select>

当你选择短片时,它应该显示&#39; Foo&#39;并且&#39; Bar&#39;。当你选择长时,它应该显示&#39; Foo&#39;和&#39; Foobar&#39;。

所以我想比较{{type}}和应用的类名,并显示其中一个应用的类名是否与{{type}}匹配。我怎么能这样做?


PLUNKER

1 个答案:

答案 0 :(得分:1)

如果你只想要过滤掉选项,我建议使用ng-if。如果item[type]返回false,则隐藏它。

http://jsfiddle.net/68Lyz56x/1/

<div ng-app>
<div ng-controller="ctrl">
    <select ng-model="type">
        <option val="short">short</option>
        <option val="long">long</option>
    </select>
    <select>
        <option ng-repeat="item in items" ng-if="item[type]">{{item.name}}</option>
    </select>
</div>

function ctrl($scope) {

$scope.items = [{
    name: 'Foo',
    short: true,
    long: false
}, {
    name: 'Bar',
    short: true,
    long: true
}, {
    name: 'Foobar',
    short: false,
    long: true
}]
}