在自定义过滤器中使用数组

时间:2016-09-01 19:06:30

标签: javascript angularjs angularjs-filter

我创建了一个具有以下格式的数组......

$scope.myArr = [arg1, arg2];

现在我想创建一个自定义过滤器,将数组作为参数并与另一个数组进行比较,例如我想将其用作...

<div class="form-container" ng-repeat="formblock in forms | filter:dateFilter(myArr)">

这样每个formblock都会与数组进行比较,因此如果formblock.datearg1arg2,则会显示这些内容,否则会隐藏其他内容。

这可能吗?

1 个答案:

答案 0 :(得分:2)

您的自定义Angular#Filter的HTML应为

<div class="form-container" ng-repeat="formblock in forms | dateFilter:myArr">

您的forms被隐含地作为第一个参数传递,并在过滤器名称之后使用:传递了附加参数。

JS:

过滤:

app.filter('dateFilter', function() {

    var boolFound = false;
    return function(arrForm, arrArg) {

        arrForm.forEach(function(val, key) {
            var boolFound = false;
            arrArg.forEach(function(val1, key1) {

                if (val.date === val1) {
                    boolFound = true;
                }
            });
            if (boolFound === false) {
                arrForm.splice(key, 1);
            }
        });
        return arrForm;
    }
})

以下是更新后的Fiddle