用于angularjs分页的自定义过滤器

Custom Filter for angularjs pagination

本文关键字:自定义 过滤器 分页 angularjs 用于      更新时间:2023-09-26

我正在尝试使用angularjs对分页应用一个条件。

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

这是我的:

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

我想做的是基于从函数返回的bool值进行过滤,但也能够对显示的项目应用文本过滤器。

我如何应用这个附加条件,它也将与文本过滤器一起工作。

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

提前感谢!

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

.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(){
      //
 };
 });

青色,谢谢你的帮助,我想我快成功了。(在我的辩护中,我通常写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传递到GetParameterVisibility函数从我的dir-paginate="x in itemsToDisplay..