我对AngularJS中的过滤有疑问。我想限制仅在可见项目上的ng-repeat生成视图中的过滤。以下是我的情况示例:
我有一个简单的数组ob对象。每个对象都有4个属性 - title,numerus,description和supervisorTitle。
当我创建视图时,我不希望显示supervisorTitle,因此生成这种视图的代码是这样的:
<tr ng-repeat="reportUnit in reportUnits | filter:filterRpText">
<td on-finish-report-units>{{reportUnit.title}}</td>
<td>{{reportUnit.numerus}}</td>
<td>{{reportUnit.description}}</td>
</tr>
但是当我使用输入过滤ng-model =“filterRpText”时,我注意到,过滤器也在使用supervisorTitle。所以它对整个模型都很感兴趣,而不仅仅是它的可见部分(标题,数字和描述)。
这是有道理的,但我怎么能限制它,所以它只会过滤标题,数字和描述?
由于
答案 0 :(得分:2)
试试这个。
您可以创建自定义过滤器,放入控制器
$scope.myFilter = function(reportUnit) {
return function(reportUnit) {
return reportUnit.title.indexOf($scope.filterRpText) ||
reportUnit.numerus.indexOf($scope.filterRpText) ||
reportUnit.description.indexOf($scope.filterRpText);
}
}
在模板中,添加过滤器
<tr ng-repeat="reportUnit in reportUnits | filter:myFilter(reportUnit)">