所以我得到了一个使用UI-Router的AngularJS的项目,我遍历了一个json,该json具有一个名为“ state”的属性,这是我想用作过滤器的属性,但是,我将使用“选择器”我可以选择“全部”或特定的一个。
我是AngularJS的新手,所以不确定到底是什么不起作用,这是我到目前为止的代码:
df2 <- df %>%
group_by(group) %>%
mutate(epi = cumsum(!is.na(starts))) %>%
ungroup()
df2
# # A tibble: 8 x 4
# group starts ends epi
# <fct> <dttm> <dttm> <int>
# 1 a 2011-09-18 00:00:00 NA 1
# 2 a NA 2013-03-06 00:00:00 1
# 3 a 2014-08-08 00:00:00 2015-08-08 00:00:00 2
# 4 a 2016-09-18 00:00:00 NA 3
# 5 a NA 2017-03-06 00:00:00 3
# 6 b 2013-08-08 00:00:00 2014-08-08 00:00:00 1
# 7 b 2015-08-08 00:00:00 NA 2
# 8 b NA 2016-08-08 00:00:00 2
但是过滤器无法正常工作 这是我的称呼方式:
function filterState (installment){
switch(selectedValue) {
case 1:
if(installment.state === 'PAID'){
return installment;
}
break;
case 2:
if(installment.state === 'LATE'){
return installment;
}
break;
case 3:
if(installment.state === 'PENDING'){
return installment;
}
break;
default:
return installment;
}
当我像过滤器一样手动按值过滤时,不确定确切的错误是什么:{state:'PAID'} 有效
答案 0 :(得分:0)
Filter函数返回迭代器函数。像回调。请检查以下示例。
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.criteria = { name: 'Bob'};
$scope.criteriaMatch = function( criteria ) {
return function( item ) {
return item.name === criteria.name;
};
};
$scope.items =[
{ name: 'Bob'},
{ name: 'Alice'}
];
});
<div ng-repeat="item in items | filter:criteriaMatch(criteria)">
{{ item }}
</div>
http://plnkr.co/edit/vtNjEgmpItqxX5fdwtPi?p=preview
信用:匿名
答案 1 :(得分:0)
如果您需要使用选择选项进行过滤,则可以执行以下操作:
<select name="select" id="select" ng-model="clients.status">
<option value="PAID">PAID</option>
<option value="LATE">LATE</option>
<option value="PENDING">PENDING</option>
<option value="ALL">ALL</option>
</select>
<div class="row" ng-repeat="installment in clients.installments | filter: filterState">
{{installment.id}}
</div>
并在控制器中进行过滤的功能:
$scope.filterState = function(installment) {
if ($scope.clients.status === 'ALL') return true;
return $scope.clients.status === installment.status;
};
选择选项ALL
时,它将显示列表中的所有项目
在此处查看有效的演示:DEMO
答案 2 :(得分:0)
显然,我需要返回一个布尔值而不是对象,我之前曾尝试过,但是我的另一个问题是在执行之后,我直接调用了函数而不是执行vm.function(一次传递给上下文)起作用了。