AngularJS:按ID数组过滤

时间:2015-04-26 19:28:55

标签: angularjs ui-select

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

我怎么能实现这个目标?

2 个答案:

答案 0 :(得分: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。看看如何根据过滤函数中的['Green','Red']数组过滤颜色列表。

答案 1 :(得分:0)

修改:以下解决方案仅适用于angular native select,而不适用于angular-UI's select。因此,这个答案并不适合这个问题,但我会留在这里寻找原生解决方案的社区,以及lodash可读性的东西。

我会使用一个简单的filter,可能会使用lodash来提高可读性

<强>控制器

       Socket socket = null;
       DataInputStream dataInputStream = null;
       dataInputStream = new DataInputStream(
                              socket.getInputStream());

       String clientDayOfWeek = dataInputStream.readUTF();
       ArrayList<String> ar = new ArrayList<String>();
       String temp = clientDayOfWeek;
       ar.add(temp);
       System.out.print("Items in list: "+ ar);

<强>模板

$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);
    });
}