[英]Custom Filter for angularjs pagination
我正在尝试使用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"
提前致谢!
在应用程序模块中创建用于处理功能的过滤器:
.filter('fvisible', ['myService',function(myService) {
return function(input) {
return myService.GetParameterVisibility(input);//or any logic with this
};
}]);
然后,您将过滤器链接起来,因为顺序很重要,并且来自一个过滤器的数据将流向另一个过滤器。
| filter:textFilter | filter:fvisible |
使用过滤器链接,您可以使用或声明过滤器。 我不太确定您要基于bool返回什么,但这就是您可以创建自己的过滤器进行处理的方式。 另外,您还必须注入getVisibility函数,因此您可以在此函数内部创建创建服务并注入以过滤可见性。
.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从我在itemsToDisplay中的dir-paginate =“ x传递给GetParameterVisibility函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.