我在angularJS中创建了一个表。
HTML:
<div class="widget-content" ng-controller="getAllBenchersController">
<table ng-table="talentPoolList" show-filter="true"
class="table table-striped table-bordered">
<tr ng-repeat="employee in $data" | filter: testFilter">
<td data-title="'#'">{{$index + 1}}</td>
<td data-title="'Employee ID'" sortable="'employee.employeeNo'"
filter="{ 'employee.employeeNo': 'text' }">
{{employee.employee.employeeNo}}
</td>
<td data-title="'Current State'" sortable="'state.state'" filter="{ 'state.state': 'text' }"
ng-class="{ red: employee.state.state == 'Available', blue: employee.state.state == 'Blocked'}">
{{employee.state.state}}
</td>
</tr>
</table>
</div>
在<td data-title="'Current State'">
我要应用过滤器。我想只显示返回值的状态&#39;可用&#39;并且&#39;被阻止&#39;。
我的控制器是:
myApp.controller('getAllBenchersController', ['$scope', 'employeeTalentPoolServices', 'dataTable', '$window', '$timeout', function ($scope, employeeTalentPoolServices, dataTable, $window, $timeout) {
employeeTalentPoolServices.getAllBenchers().then(function (result) {
$scope.data = result.data;
$scope.testFilter = function (item) {
return (item.state.state.toLowerCase() === 'available' || item.state.state.toLowerCase() === 'blocked');
}
});
州通常会返回值 - &#39;可用&#39;,&#39;阻止&#39;结算&#39;并且&#39;被拒绝&#39;。我希望桌子只显示状态 - &#39;可用&#39;并且&#39;被阻止&#39; 请检查并指出我做错了什么。
答案 0 :(得分:2)
如果您只想显示状态为'available'和'blocked'的项目,我认为最好的选择是在ng-repeat中应用角度过滤器。通过这种方式,ng-repeat只计算表所需的项目。
您可以添加新过滤器,例如:
myApp.filter('filterState',
[], function() {
return function(items) {
return items.map(function(obj) {
if (obj.state === 'available' || obj.state === 'blocked')
return obj;
});
});
之后,你的div元素应该是:
<tr ng-repeat="employee in $data" | filter: filterState">
答案 1 :(得分:2)
return (item.state.state.toLowerCase() === 'available' || item.state.state.toLowerCase() === 'blocked');
上面的代码返回一个布尔值,如果你有数组的值列表,这里只考虑一个值。 你应该写一个for循环,然后检查值。 请参阅以下代码:
var filteredOutput=[];
for(var i=0;i<item.length; i++){
if(item[i].state.state.toLowerCase() === 'available' || item[i].state.state.toLowerCase() === 'blocked')
{
filteredOutput.push(item[i]);
}
}
return filteredOutput;