使用select清除angularJS中的过滤器

时间:2014-02-17 13:35:13

标签: angularjs angularjs-filter

我在下面给出的HTML中使用了ngOptions指令:

<select ng-model="selectedGroupToShow.Id" ng-options="g.Id as g.Name for g in myGroups">
    <option value>-- All --</option>
</select>

我在ng-repeat中使用的过滤器显示我的数据如下:

filter:{GroupId:selectedGroupToShow.Id}"

即使我使用

filter:selectedGroupToShow

问题保持不变。重置过滤器..

这很有效,但是当我想清除过滤器时(选择默认选项 - '全部'),它只会显示根本没有设置 GroupId 参数的数据。

如何在select?

中选择默认选项元素时显示所有数据(清除过滤器)

2 个答案:

答案 0 :(得分:23)

我想我理解你的问题,你所面临的问题是当选择下拉菜单时--ALL--它的值为null且未定义。 所以要重置它,你必须将它设置为undefined。

<div ng-repeat="item in items| filter:{itemId:selectedGroupToShow.Id||undefined}">
         {{item.itemId}}
</div>

请参考我为您的问题创建的以下小提琴。

fiddle

答案 1 :(得分:1)

我是这样做的,只是一个空的String值。

希望它可以帮助任何人。

JADE代码:

select.form-control(ng-model="productType", ng-init="productType='free'")
        option(value="free") FREE
        option(value="interest") INTEREST
        option(value="hybrid") HYBRID
        option(value="") ALL

.col-sm-6.col-md-4.col-lg-3(ng-repeat="product in productList | filter:{ type :productType }") {{product.name}}