当前位置: 首页 > 面试题库 >

如何使用几个链接在AngularJS中过滤列表

艾俊晖
2023-03-14
问题内容

我已经浏览了很多有关如何过滤列表的教程,但找不到适合我的简单用例的示例。

我有几个按钮,例如

<a href="#" id="filter-by-name">Name</a>
<a href="#" id="filter-by-age">Age</a>
<a href="#" id="filter-by-height">Height</a>

我有var persons = {...}物体,并且像显示它

<div ng-repeat="person in persons">
  {{person.name...}}
</div>

如何创建过滤器,以便每次我单击其中一个按钮时,列表都会被过滤?

我尝试添加,ng-repeat="person in persons | filter:filterPersons" 并在脚本方面编写:

$scope.filterPersons(person){
  if (person.name == "John")
    return person;
}

但这只是一个用例(如何用其他名称过滤?)-换句话说- 如何将链接连接到过滤器?


问题答案:

您可以像其他任何操作一样将过滤器绑定到范围变量。因此,您需要做的就是在用户单击并将相应的过滤器绑定到ng- repeat过滤器参数时将其设置为作用域。看到:

<div ng-app>
  <span ng-click="myFilter = {type: 1}">Type 1</span> | 
  <span ng-click="myFilter = {type: 2}">Type 2</span> |
  <span ng-click="myFilter = null">No filter</span>
  <ul ng-controller="Test">
    <li ng-repeat="person in persons | filter:myFilter">{{person.name}}</li>
  </ul>
</div>



function Test($scope) {
  $scope.persons = [{type: 1, name: 'Caio'}, {type:2, name: 'Ary'}, {type:1, name: 'Camila'}];
}

请注意,myFilter当用户单击过滤器时,更改,并且绑定到ng- repeat过滤器。在这里摆弄。您也可以创建一个新的过滤器,但是这种解决方案要好得多。



 类似资料:
  • 问题内容: 我的过滤器很少 在我的项目中,要获得良好的结果,我必须在控制器中进行此过滤,而不是在视图中 我知道基本的语法,但我不知道如何在控制器中制作过滤器链,因此一切都将如模板中的示例一样工作。 我找到了一些解决方案,现在仅使用一个过滤器,但是应该可以用于许多;) 我在ng-repeat中使用此功能可以正常工作,但是我必须使用少量过滤器进行检查。 问题答案: 您只需重新过滤您从第一个过滤器返回的

  • 问题内容: 我想在过滤器中向后端请求并返回请求的结果。问题是服务$ http返回一个承诺,这就是问题。 对于存在的问题,我用$超时和角度在我的小提琴的承诺: 我的小提琴 在我的过滤器中,我使用带有承诺的$ timeout,但是最终目标是使用请求http: }); 然后在我看来,我使用了我的过滤器,该过滤器假定以2秒的延迟显示“ ca marche”,但这不起作用: 您会看到过滤器不返回任何内容,并

  • 问题内容: 我有一个包含JSON对象的数组(_users)。 1-如何仅过滤具有“活动”:“ 1”而不是“ 0”的用户 我已经尝试过这样的事情: 但无法为我正常工作。 谢谢! 问题答案: 由于您的对象模型有点复杂,因此我建议您使用自定义过滤功能: 然后在您的HTML中: 这是工作中的jsFiddle:http : //jsfiddle.net/pkozlowski_opensource/4kzzy

  • 问题内容: 当我用ng-repeat迭代一些数组时,我想在过滤器中使用参数 例: HTML部分: JavaScript部分: 但是我希望能够使用像 但是它不起作用。我该怎么做? 问题答案: 更新: 我想我对文档的了解并不足够,但是您绝对可以使用具有以下语法的过滤器过滤器(请参阅此小提琴)来按对象的属性过滤: 如果有帮助,这是我的原始答案: 使用过滤器过滤器将无法传递参数,但是至少可以做两件事。 1

  • 问题内容: 我正在尝试做类似的事情: AngularJs部分: 但是不知何故,它向我展示了所有物品。如何筛选(键,值)? 问题答案: Angular 过滤器只能通过angular的API应用于数组,而不能应用于对象- “从数组中选择项的子集,并将其作为新数组返回。” 您在此处有两个选择: 1)移至数组或 -2)预过滤项目,如下所示: 并在控制器上: jsfiddle :http : //jsfid

  • 本文向大家介绍Angularjs中如何使用filterFilter函数过滤,包括了Angularjs中如何使用filterFilter函数过滤的使用技巧和注意事项,需要的朋友参考一下 AngularJS的filter,中文名“过滤器”是用来过滤变量的值,或者格式化输出,得到自己所期望的结果或格式的东东。AngularJS中有一个filterFilter函数用来对集合过滤,非常方便。 源代码大致如下