在我的项目中,我有一张桌子,我在其中循环播放一个数组。我希望用户可以选择过滤表格,方法是根据名称显示数据或显示所有数据。
我有一个像这样的控制器:
var app = angular.module('app', []);
app.controller('Ctrl',[], function($scope){
$scope.LoggedInTeacher = 'Papa Johns';
$scope.Teachers = [{Id: 1, Name: 'Patricia Johns' , Subject: 'Science'},
{Id: 2, Name: 'Veronica Smith' , Subject: 'Maths'},
{Id: 3, Name: 'Clifford Harris' , Subject: 'Music'},
{Id: 4, Name: 'Papa Johns' , Subject: 'Catering'},
{Id: 5, Name: 'Bill Gates' , Subject: 'Information Tech'},
{Id: 6, Name: 'Papa Johns' , Subject: 'Dance'}
]
})
;
//Here is my View - filtering my array
<div ng-controller = "Ctrl">
<table>
<tr>
<th> Name </th>
<th> Subject</th>
</tr>
<tr ng-repeat=" t in Teachers">
<td>{{t.Name}}</td>
<td>{{t.Subject}}</td>
</tr>
</div>
上面的上下文工作正常,但我需要通过登录的用户名过滤结果。因此,例如在表格下方,我希望有两个复选框来过滤数据,如下所示:
<input type="checkbox" ng=model="filter table by LoggedInTeacher "> Show only Mine
<input type="checkbox" ng-model="show all"> Show All
我将如何实现这一目标?
谢谢
答案 0 :(得分:2)
保存用户输入的过滤条件,例如“ filterValue ”。在每个选项中,当用户选择复选框时,更改filterValue的值。
<input type="checkbox" ng-click="filterValue = LoggedInTeacher"> Show only Mine </input>
<input type="checkbox" ng-click="filterValue = ''"> Show All </input>
在ng-repeat中,更改表达式:
<tr ng-repeat="t in Teachers | filter: filterValue">
答案 1 :(得分:0)
您可以使用如下过滤器:
<tr ng-repeat=" t in Teachers | filter: {name: 'Bill Gates'}">
您可以输入定义过滤器的变量,而不是{name:&#39; Bill Gates&#39;}。
答案 2 :(得分:0)
你可以使用它。
<tr ng-repeat=" t in Teachers | filter: {name: LoggedInTeacher}">