Bolboa Bolboa - 3 months ago 6
AngularJS Question

use array in custom filter

I created an array that has the following format...

$scope.myArr = [arg1, arg2];


Now I want to create a custom filter that will take the array as a parameter and compare to another array, for example I want to use it as so...

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


This way every
formblock
will be compared to the array, so if
formblock.date
has either
arg1
or
arg2
then these will show, otherwise hide everything else.

Is this possible?

R.J R.J
Answer

Your html with custom Angular#Filter should be

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

Your forms is passed as firsr parameter implicitely and passed the additional parameter with : after filter name.

JS :

Filter :

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

Here is the updated Fiddle