AngularJS在多个参数上过滤
AngularJS filter on multiple parameters
我有从$scope填充的表,标题中有两个搜索文本框,用于过滤用户名和电子邮件:
<table class="table">
<thead>
<tr>
<th></th>
<th><input type="search" placeholder="Search" ng-model="searchName"></th>
<th><input type="search" placeholder="Search" ng-model="searchMail"> </th>
<th></th>
</tr>
<tr>
<th>ID</th>
<th>Name</th>
<th>email</th>
<th>password</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="q in dataForTable | filter:{user_fullname : searchName, user_email : searchMail}">
<td>{{q.user_id}}</td>
<td>{{q.user_fullname}}</td>
<td>{{q.user_email}}</td>
<td>{{q.user_password}}</td>
</tr>
</tbody>
dataForTable 通过 $http 来自控制器:
$http.get('http://tbrzica.comli.com/rest/index.php/simple/users').success(function(data){
$scope.dataForTable=data;
});
但是,当页面最初加载时,表为空。只有当我在文本框中写一些东西并删除输入时,才会填充表格并且按两个条件搜索才能正常工作。这是某种错误吗?
提前谢谢。
编辑:找到解决方案:
我需要在控制器中初始化两个 ng 模型参数:
$scope.searchName="";
$scope.searchhMail="";
tymeJV,谢谢你的回答。
在控制器中,您可以为过滤器创建一个范围函数,如下所示:
$scope.filterUser = function(fullName, email) {
return function(user) {
return (fullName == undefined || fullName.length == 0 || user.user_fullname == fullName)
&& (email == undefined || email.length == 0 || user.user_email == email);
}
}
在HTML中,您可以应用以下过滤器:
<tr ng-repeat="q in dataForTable | filter:filterUser(searchName, searchMail)">
<td>{{q.user_id}}</td>
<td>{{q.user_fullname}}</td>
<td>{{q.user_email}}</td>
<td>{{q.user_password}}</td>
</tr>
希望这有帮助!
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 使用Express捕获参数
- 有可能过滤来自嵌入式YouTube的声音吗
- 参数变量出现ngTable指令问题
- AngularJS:我可以跳过函数参数回调吗
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 如何使用按数组参数过滤的角度访问嵌套的 JSON 数组数据
- AngularJS在多个参数上过滤
- 传递其他参数以过滤回调 D3 和 javascript
- Javascript - 如何按参数过滤对象数组
- 主干过滤产品在每个类别中(过滤器参数将是类别名称)
- 如何过滤数组并将其与 Javascript 中的函数参数进行比较
- AngularJS-在一个数组中使用多个不断变化的参数进行过滤
- 使用iframe中的URL参数过滤视图
- 如何过滤具有可变参数的javascript对象数组
- 如何获得一个过滤角字符串作为js函数参数
- 如果服务器不过滤jsonp的回调参数,是否存在安全问题?
- 使用regexp过滤url中的问号(?)参数并添加其中一个?或&
- (Angular JS)如何过滤$http.如果响应是JSON对象数组,则通过传递参数获取
- AngularJS:用两个参数从输入中过滤结果