1

我正在使用 ui-select 显示一个下拉列表,其中包含我从 web 服务以 json 响应的形式获得的值。我有另一个数组,其中有“id”,它们只是整数值。我想通过数组的值过滤 ui-select。

我怎么能做到这一点?

4

2 回答 2

2

您可以创建自己的自定义过滤器,它只是在您的控制器中定义的一个函数,它看起来像这样:

$scope.customFilter = function(item) {
    var arr = [1,25,8]; //Your integer array here
    return arr.indexOf(item) > -1; //returns true if exists
}

您的 HTML 将是:

<ui-select-choices repeat="x in myArray | filter: customFilter">
    {{x}}
</ui-select-choices>

更新了我发现要演示的Plunker 。看看颜色列表是如何根据 filter 函数中的 ['Green', 'Red'] 数组进行过滤的。

于 2015-04-26T19:41:28.027 回答
0

编辑:以下解决方案仅适用于angular native select,而不适用于angular-UI 的 select。因此,这个答案并不真正适合这个问题,但我会把它留在这里,以供社区搜索本地解决方案和 lodash 可读性的东西。

我会使用一个简单的过滤器,可能会使用lodash以提高可读性

控制器

$scope.selectedBean = null;
$scope.beans = [{id:1},{id:2}];//database lookup or something
$scope.idsFilter = [1, 2];//ng-model or something

$scope.idInArray = function(beans, ids) {
    return _.filter(beans, function(bean){
        return _.contains(ids, beans.id);
    });
}

模板

<select ng-model="selectedBean" ng-options="bean.name for bean in beans | filter:idInArray:idsFilter">
</select>
于 2015-04-26T21:48:39.147 回答