2015-07-20 135 views
0

我正在尝试使用angularjs将分页应用于分页。angularjs分页的自定义过滤器

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

这是我有:

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

我想什么做的是一种基于布尔过滤器从函数返回,也可以申请所示的项目文本过滤器。

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

例如

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

在此先感谢!

回答

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

感谢您的文章!我已经加入过滤器,服务于我的angularjs控制器。我在过滤器和服务的开始处得到了“。”的语法错误。我在哪里添加了这个代码? – ee0jmt

+0

angular.module('formularzeApp') .filter('x',function(){。 ...})。service('y',function(){});你通过链接返回模块方法后添加它 – cyan

+0

青色,越来越近,但仍然无法正常工作。多一点帮助! – ee0jmt

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在itemsToDisplay =“X的GetParameterVisibility功能..

+0

将angular.module('parametersApp')。filter更改为app.filter和('parametersController',function($ scope,$ http){// Code}); to('parametersController',['$ scope','$ http',function($ scope,$ http){// Code}]); – cyan

+0

感谢您的帮助青色。我已经放弃了,现在在分配要显示的对象数组之前应用过滤。 – ee0jmt

+0

你如何确定知名度?对象中的指定值是真/假还是始终为真或假? – cyan

相关问题