根据值数组

时间:2015-07-08 17:40:43

标签: angularjs

我有一个使用ng-options填充的选择框。

$scope.items = [
   {ID: '2012', Title: 'Chicago'},
   {ID: '2013', Title: 'New York'},
   {ID: '2014', Title: 'Washington'},
];

<select ng-model="selectedItem" ng-options="item.ID as item.Title for item in items | filter:filterItemNames">
</select>

这会返回......

<option value="2012">Chicago</option>
<option value="2013">New York</option>
<option value="2014">Washington</option>

我想根据他们的名字(即纽约和芝加哥)过滤和显示多个项目。

我目前正在尝试使用带有项目名称的数组进行过滤,但这不起作用。

$scope.filterItemNames = ['New York', 'Chicago'];

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以创建自定义过滤器功能:

$scope.filterByNames = function(el) {
    return !$scope.filterItemNames || $scope.filterItemNames.indexOf(el.Title) > -1;
};

并在HTML中使用它:

<select ng-model="selectedItem" 
        ng-options="item.ID as item.Title for item in items | filter:filterByNames">
</select>

演示: http://plnkr.co/edit/lqiMIlEYdrLlS6K0H2g9?p=preview