How to use parameters within the filter in AngularJS?

前端 未结 5 1803
傲寒
傲寒 2020-11-28 19:14

I want to use parameter in filter, when I iterate some arrays with ng-repeat

Example:

HTML-Part:



        
5条回答
  •  野性不改
    2020-11-28 20:08

    UPDATE: I guess I didn't really look at the documentation well enough but you can definitely use the filter filter with this syntax (see this fiddle) to filter by a property on the objects:

    
    

    Here's my original answer in case it helps someone:

    Using the filter filter you won't be able to pass in a parameter but there are at least two things you can do.

    1) Set the data you want to filter by in a scope variable and reference that in your filter function like this fiddle.

    JavaScript:

    $scope.status = 1;
    $scope.users = [{name: 'first user', status: 1},
                    {name: 'second user', status: 2},
                    {name: 'third user', status: 3}];
    
    $scope.isStatus = function(user){
        return (user.status == $scope.status);
    };
    

    Html:

  • OR

    2) Create a new filter that takes in a parameter like this fiddle.

    JavaScript:

    var myApp = angular.module('myApp', []);
    myApp.filter('isStatus', function() {
      return function(input, status) {
        var out = [];
          for (var i = 0; i < input.length; i++){
              if(input[i].status == status)
                  out.push(input[i]);
          }      
        return out;
      };
    });
    

    Html:

  • Note this filter assumes there is a status property in the objects in the array which might make it less reusable but this is just an example. You can read this for more info on creating filters.

提交回复
热议问题