如何根据angular-dropdown-multiselect的值过滤ng-repeat中的数据

时间:2017-02-16 13:47:16

标签: angularjs

我使用ng-repeat显示表格中的数据。现在,我必须使用基于角度下拉列表multiselect的选中值来过滤数据。怎么做才能有人帮助我?

1 个答案:

答案 0 :(得分:1)

我要做一些假设。首先是你使用我用Google搜索时看到的第一个Angular Dropdown Multiselect。看起来他们的网站可能有点破碎,但我收集的是你的模型应该是一个对象数组,每个对象都有一个ID和显示。在这种情况下,您可以使用过滤器。在过滤器中,只需根据匹配的ID编译一个数组。因此,如果你的控制器看起来像:

class MyResult {
    public static void main(String[] args) {
        double per = 65.56;
        if (per >= 75) {
            System.out.println("Result is FCD");
        }
        elseif(per >= 60); {
            System.out.println("Result is FC");
        }
        elseif(per >= 45); {
            System.out.println("Result is SC");
        } else {
            System.out.println("Result fail");
        }
    }
}

然后创建一个过滤器:

app.controller('Ctrl', function($scope) {
  $scope.FilterPhrase = [ 
                {ID:6, Display:"Display6"},//this wont show up
                {ID:3, Display:"Display3"},
                {ID:1, Display:"Display1"}];
  $scope.myData = [{ID:1, Display:"Display1"},
                   {ID:2, Display:"Display2"},
                   {ID:3, Display:"Display3"},
                   {ID:4, Display:"Display4"},
                   {ID:5, Display:"Display5"}];
}); 

最后,在ng-repeat

结束时调用它
app.filter('multifilter', function () {
return function (list, filterdata) {
        var results = [];

    filterdata.forEach(function(a){
            var r = list.find(function(b){
                return a.ID==b.ID;
        });
        results.push(r);          
        });
   return results;
};
});

小提琴:http://jsfiddle.net/brhardwick/promv3e1/2/