【问题标题】:Angular filtering based on the field value基于字段值的角度过滤
【发布时间】:2015-08-19 11:55:23
【问题描述】:
我有一个表格,我正在执行 ng-repeat 并从服务器获取数据
<tr ng-repeat="assetsdetail in detailAssets | filter: {IND_RECORD_TYPE : !RUNNING}:true">
<td>{{assetsdetail.MASTER_ASSET_TYPE}}</td>
<td>{{assetsdetail.MINOR_ASSET_TYPE}}</td>
<td>{{assetsdetail.DETAIL_ASSET_TYPE}}</td>
<td>{{assetsdetail.PRODUCT_DESC}}</td>
<td>{{assetsdetail.VENDOR_NAME}}</td>
<td>{{assetsdetail.IND_RECORD_TYPE}}</td>
</tr>
我想要在这里实现的是我想要所有数据,除了那些
IND_RECORD_TYPE 的 RUNNING。到目前为止我还没有做到这一点,他们认为这是一种简单的方法吗?
【问题讨论】:
标签:
javascript
angularjs
filter
【解决方案1】:
好吧,您不需要过滤器。一个简单的 ng-show 可以做到以下几点:
<tr ng-repeat="assetsdetail in detailAssets" ng-hide="assetsdetail.IND_RECORD_TYPE == 'RUNNING'">
<td>{{assetsdetail.MASTER_ASSET_TYPE}}</td>
<td>{{assetsdetail.MINOR_ASSET_TYPE}}</td>
<td>{{assetsdetail.DETAIL_ASSET_TYPE}}</td>
<td>{{assetsdetail.PRODUCT_DESC}}</td>
<td>{{assetsdetail.VENDOR_NAME}}</td>
<td>{{assetsdetail.IND_RECORD_TYPE}}</td>
</tr>
但是,如果您坚持使用过滤器,您可以这样做:
<tr ng-repeat="assetsdetail in detailAssets | filter: filterItem">
<td>{{assetsdetail.MASTER_ASSET_TYPE}}</td>
<td>{{assetsdetail.MINOR_ASSET_TYPE}}</td>
<td>{{assetsdetail.DETAIL_ASSET_TYPE}}</td>
<td>{{assetsdetail.PRODUCT_DESC}}</td>
<td>{{assetsdetail.VENDOR_NAME}}</td>
<td>{{assetsdetail.IND_RECORD_TYPE}}</td>
</tr>
在您的控制器中,声明一个函数“filterItem”,如下所示:
$scope.filterItem = function(item) {
if(item.IND_RECORD_TYPE == 'RUNNING') {
return false;
}
return true;
}
这个函数的作用是获取数组的每个'item',如果你想显示它返回true,如果你想隐藏它返回false。您的情况中的 'item' 是 'assetsdetail'
【解决方案2】:
改变
filter: {IND_RECORD_TYPE : !RUNNING}
到
filter: {IND_RECORD_TYPE : '!RUNNING'}