Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使角度空过滤器匹配未定义和空值?_Javascript_Angularjs_Angular Filters - Fatal编程技术网

Javascript 如何使角度空过滤器匹配未定义和空值?

Javascript 如何使角度空过滤器匹配未定义和空值?,javascript,angularjs,angular-filters,Javascript,Angularjs,Angular Filters,我在键入筛选器并将其删除时发现了一个问题,该集合一直被筛选,并且没有显示筛选项中具有未定义或空值的项 示例代码: <div ng-app="App" ng-controller="AppController as app"> <p> Filters </p> Name: <input ng-model="listFilters.name" type="text"/> <br/> Short Description

我在键入筛选器并将其删除时发现了一个问题,该集合一直被筛选,并且没有显示筛选项中具有未定义或空值的项

示例代码:

<div ng-app="App" ng-controller="AppController as app">
<p>
Filters
</p>
    Name: <input ng-model="listFilters.name" type="text"/>
    <br/>
    Short Description: <input ng-model="listFilters.shortDescription" type="text"/>

    <ul>
        <li ng-repeat="person in app.persons | filter:{name: listFilters.name, shortDescription: listFilters.shortDescription}">
            <p>{{person.name}}</p>
        </li>
    </ul>
</div>
工作小提琴:

了解我正在谈论的问题的步骤:

  • 按名称筛选,列表将被筛选
  • 清除过滤器,查看列表如何再次显示(Bill、Sally、Jhon)
  • 按说明筛选,列表将被筛选
  • 删除过滤器,只显示集合的第二个值(Sally),不显示未定义或为空的值。它是按“空字符串”过滤的
  • 我想这是角度过滤器的默认行为,但是。。。有办法改变吗?我必须自己做过滤器吗

    我想分别按这两个属性进行筛选,
    集合| filter:filter.var
    不满足此目的


    这与仅显示非空值的筛选也不相同,更接近于相反的情况…

    将您的li html更新为如下内容:

    <li ng-repeat="person in app.persons | filter:listFilters.name">
    
  • 以下是更新的小提琴:

  • shortDescription:null,它不表示“”,null!='',因此,当您从“简短描述”中删除文本时,它不会显示“账单”项。
  • 第三项中根本没有shortDescription,因此
    ng model=“listFilters.shortDescription”
    无法绑定到属性
  • 只有“Sally”项工作正常,因为ng模型可以绑定到属性

  • 可能的重复我看不到任何重复,它更多的是一个相反的功能,我不想过滤!!或者是!null我想根据文本输入中的值进行过滤,当它被删除时,我不想进行任何过滤。所以我需要过滤器对'undefined',null和''(空字符串)进行同等的求值。是的,我知道,我甚至在我的描述中澄清了这一点:它是通过“空字符串”进行过滤的。我希望“”(空)筛选器不执行任何筛选器。所以我得到了一个元素,它的shortDescription值为'undefined',而null值为。只在所有项目上添加属性比创建自定义筛选器更容易,尽管您可以创建自定义筛选器这不是什么大问题。我可以创建一个示例。我想知道是否有一种方法可以做到这一点,而无需编写筛选器,也无需将字段作为空字符串添加,只需使用角度技巧或我不知道的功能,但我想没有。哇,这是对功能的一点重建。。。我按person元素中的元素进行过滤,我确实希望保留该功能,我不能使用常规的
    集合|过滤器:some.filter
    <li ng-repeat="person in app.persons | filter:listFilters.name">