【问题标题】:AngularJs, filter case insensitiveAngularJs,过滤器不区分大小写
【发布时间】:2013-08-07 13:38:15
【问题描述】:

我有一个包含小写和大写数据的 json。 例如:

[

  { "firstName":"JoHn" , "lastName":"DoE" }, 
  { "firstName":"aNnA" , "lastName":"smIth" }, 
  { "firstName":"PeTer" , "lastName":"JOnes" }

]

我也有类似的东西:

Search: <input ng-model="searchText">
        <table id="searchTextResults">
          <tr><th>Name</th><th>Phone</th></tr>
          <tr ng-repeat="friend in friends | filter:searchText">
            <td>{{friend.firstName}}</td>
            <td>{{friend.lastName}}</td>
          </tr>
        </table>

我想要做的是搜索朋友而不查看大写和小写。 所以基本上当我在输入中输入“John”、“JOHN”或简单地“john”时,它应该返回我的朋友 John。

那么是否可以将不区分大小写的选项应用于过滤器?

【问题讨论】:

    标签: javascript json angularjs filter angularjs-filter


    【解决方案1】:

    将函数名称传递给您在适用范围内定义的filter,在该范围内您使用字符串的toLowerCase。见ngFilter。函数签名是一个简单的function (item) { ... }

    控制器中的示例 JS:

    $scope.filterOnlyFoo = function (item) {
        return item == "foo";
    }
    

    示例 HTML:

    <div data-ng-repeat="item in items | filter: filterOnlyFoo"></div>
    

    Sample Plunker

    【讨论】:

    • 但我不想小写或大写任何东西。只想知道是否可以不区分大小写。
    • 您不必将原始值设置为小写,只需一个临时值(例如在表达式中)即可进行检查。例如item.toLowerCase() == "foo" 对“FOO”为真,但不会改变item
    • 那我对输入的 ng-model 有什么用?
    • 在我的示例中,您可以使用$scope.searchText 来代替"foo"
    • 你是对的!在两个谓词中都应该是 $scope.searchText.toLowerCase() 而不是 $scope.searchText!
    【解决方案2】:

    有一种方法可以打开不区分大小写的过滤器:

    <div data-ng-repeat="item in items | filter : searchText : false"></div>
    

    Plunker

    【讨论】:

    • 我认为这应该是正确的,因为在docs.angularjs.org/api/ng/filter/filter,它说在{{ filter_expression | filter : expression : comparator}},如果comparator = false,那么false|undefined: A short hand for a function which will look for a substring match in case insensitive way.
    • @Alexander Vasilyev:这不是 100% 正确的,因为它试图以不区分​​大小写的方式匹配子字符串,因此例如在他的情况下,如果用户使用字母 'n' 搜索,它将返回所有记录,因为它们都有'n',最后一个属性用于严格数学,如果为真,它将完全匹配,如果为假,则不区分大小写子字符串匹配
    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2018-07-10
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多