【问题标题】:Angular ng-repeat filter: ¿How to specify filter fields?Angular ng-repeat 过滤器:¿如何指定过滤器字段?
【发布时间】:2017-02-14 17:59:47
【问题描述】:

好的,看起来很简单,但不是。

我想执行一个简单的角度过滤器,但我需要指定我的数组的哪些字段在过滤器中使用。

基本过滤器是:

 <li ng-repeat="person in app.people | filter: app.search">

单字段过滤器是:

<li ng-repeat="person in app.people | filter: {Surname: app.search}">

如何为过滤器指定多个字段? 类似的东西:

<li ng-repeat="person in app.people | filter: {Name,Surname: app.search}">

这是一个带有基本过滤器和单字段过滤器的 Plunker:https://jsfiddle.net/odLz1v71/3/

【问题讨论】:

    标签: angularjs filter ng-repeat


    【解决方案1】:

    在这种情况下,我建议您在控制器中添加一个过滤器功能,如下所示:

    vm.searchFilter = function(item){
        // Add your own search logic here
        return item.Name.includes(vm.search) || item.Surname.includes(vm.search);
    }
    

    然后像这样使用它:

    <li ng-repeat="person in app.people | filter: app.searchFilter">
    

    【讨论】:

    • 好吧,我不敢相信 Angular 本身就没有这种行为......我将使用这个过滤器功能,但我将在两个属性和属性中添加“toLowerCase()”寻找价值。非常感谢。
    • 添加toLowerCase() 是个好主意。这就是我所说的“//在此处添加您自己的搜索逻辑”-评论的意思。 :-)
    【解决方案2】:

    我认为您不能直接使用基本过滤器来执行此操作,但您可以为 filter 过滤器提供一个函数来为您执行此检查:

      vm.checkName = function (value) {
        return value.Name.indexOf(vm.search) > -1 || value.Surname.indexOf(vm.search) > -1;
      };
    

    见:https://jsfiddle.net/odLz1v71/4/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多