自定义过滤器用于angularjs分页

时间:2015-07-20 16:01:07

标签: javascript angularjs pagination

我正在尝试使用angularjs将条件应用于分页。

条件从函数GetParameterVisibility(x)返回。

这就是我所拥有的:

dir-paginate="x in itemsToDisplay | orderBy:'Name' | filter:textFilter | itemsPerPage: pageSize"

我想做的是根据函数返回的bool进行过滤,但也可以对显示的项目应用文本过滤器。

如何应用此附加条件,该条件也适用于文本过滤器。

e.g。

dir-paginate="x in itemsToDisplay | orderBy:'Name' | filter:(textFilter || GetParameterVisibility(x)) | itemsPerPage: pageSize"

提前致谢!

2 个答案:

答案 0 :(得分:0)

在应用程序模块中创建处理函数的过滤器:

.filter('fvisible', ['myService',function(myService) {
  return function(input) {
    return myService.GetParameterVisibility(input);//or any logic with this
  };
}]);

然后链接过滤器,因为顺序很重要,并且来自一个过滤器的数据被过滤到另一个过滤器。

| filter:textFilter | filter:fvisible |

使用过滤器链接,您可以使用带有过滤器的语句。我不太确定你要基于bool返回什么,但这就是你可以创建自己的过滤器来处理它的方法。 你还必须注入getVisibility函数,所以你可以用这个函数在里面创建服务,并注入过滤fvisible。

.service('myService',function(){
 this.GetParameterVisibility = function(){
      //
 };
 });

答案 1 :(得分:0)

青色,感谢你的帮助,我想我快到了。 (在我的辩护中,我通常会写c#代码)

我现在有了这个:

<div class="DataItem" dir-paginate="x in itemsToDisplay | orderBy:'Name' | filter:textFilter | filter:fvisible | itemsPerPage: pageSize" current-page="currentPage">



   var app = angular.module('parametersApp', ['angularUtils.directives.dirPagination']);
        app.controller('parametersController', function ($scope, $http) {   //Code    });


 angular.module('parametersApp').filter('fvisible', ['myService', function (myService) {
            return function (input) {
                return myService.GetParameterVisibility(input);
            };
        }]).service('myService', function () {
            this.GetParameterVisibility = function (parameter) {

                if ($('#chkInAlert').is(':checked')) {
                    if (parameter.AlertPriority > 0) {
                        return true;
                    }
                    else {
                        return false;
                    }

                }
                else {
                    return true;
                }

            };
        });

不会导致任何奖励,但它似乎也不起作用。

一个问题是如何将对象x传递给我的dir-paginate =“x in itemsToDisplay中的GetParameterVisibility函数..