【问题标题】:Angularjs - Filter one column with multiple option select inputAngularjs - 使用多个选项选择输入过滤一列
【发布时间】:2022-01-12 05:41:06
【问题描述】:

我正在尝试使用带有多个选项的选择来过滤单个列。一旦我选择了 2 个以上的选项,过滤器就会中断并在我期望返回我选择的选项时返回 0 个结果。

例如,如果我选择 Apple 和 Grape,我应该会看到所有符合我的选项的项目。

这是我的数据示例:

$scope.products = [
    {name:"Apple",type:"fruit"},
    {name:"Grape",type:"fruit"},
    {name:"Orage",type:"fruit"},
    {name:"Carrot",type:"vegetable"},
    {name:"Milk",type:"dairy"}
]

这是我的 HTML

<div ng-controller="MyCtrl">
    <select multiple ng-model="Search_by_name">
     <option value="Apple">Apple</option>
      <option value="Grape">Grape</option>
       <option value="Orage">Orage</option>
        <option value="Carrot">Carrot</option>
         <option value="Milk">Milk</option>
    </select>
    <ul>
        <li ng-repeat="item in products | filter:{name: Search_by_name }">{{item.name}}</li>
    </ul>
</div>

http://jsfiddle.net/gvmp6jr9/

我已经在 google 上搜索了 2 个小时,无法继续围绕这个。有人有什么想法吗?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您可以在控制器中创建自定义过滤功能:

    $scope.multipleFilter = function(filterCriteria) {
      return function(item) {
        return (!filterCriteria || filterCriteria.indexOf(item.name) > -1 );
      }
    };
    

    在html中你可以这样使用

    <li ng-repeat="item in products | filter: multipleFilter(Search_by_name)">{{item.name}}</li>
    

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多