我正在尝试使用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"
提前致谢!
答案 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函数..