[英]Ionic angular nested ng-repeat filter, hide title if empty
I have a nested list with a filter , it has days and activities. 我有一个带有过滤器的嵌套列表,其中包含天数和活动。
objects looks like : 对象看起来像:
days:[
{name:"monday", acts[{title:"Zumba",start:"10am",end:"11am"},{}..]}...
]
Filter works good but I'd like to hide the day header (group.title) when filter returns 0 activities for that day. 过滤器效果很好,但是当过滤器返回当天的0个活动时,我想隐藏日期标题(group.title)。
I found some answers like this : AngularJS - hide parent element if children loop is empty (filtered) 我找到了一些类似的答案: AngularJS-如果子循环为空,则隐藏父元素(已过滤)
And tried to implement with no success. 并尝试实施没有成功。
This is my code : 这是我的代码:
view 视图
<ion-view view-title="{{titulo}}">
<ion-content>
<div class="container-hearder-image" style="background-image: url('{{img}}');" >
</div>
<h4>{{titulo}}</h4>
<p>Seleccione Actividades</p>
<div ng-repeat="c in colors">
<ion-checkbox ng-click="includeColour(c)" class="item-bcg waves-effect waves-block waves-light"/> {{c}}
</div>
<ion-list ng-repeat="group in detailService.selected.days" >
<div class="item item-divider bar bar-header bar-calm" >{{group.title}}</div>
<ion-list ng-repeat="item in group.acts | filter:colourFilter">
<ion-item >
<h3>{{item.title}}</h3>
{{item.start}} - {{item.end}}
</ion-item>
</ion-list>
</ion-list>
</ion-content>
</ion-view>
controller 调节器
.controller('HorarioCtrl', function($scope, $stateParams,detailService) {
$scope.colors = ['Zumba','Combat','Spinning','HIIT','Pilates','Yoga'];
$selected = detailService.selected
$scope.detailService=detailService;
$scope.titulo = detailService.selected.title;
$scope.img = detailService.selected.img;
colourIncludes = [];
$scope.colourIncludes = colourIncludes
$scope.includeColour = function(colour) {
var i = $.inArray(colour, colourIncludes);
if (i > -1) {
colourIncludes.splice(i, 1);
} else {
colourIncludes.push(colour);
}
}
$scope.colourFilter = function(fruit) {
if (colourIncludes.length > 0) {
if ($.inArray(fruit.title, colourIncludes) < 0)
return;
}
return fruit;
}
});
Regards 问候
You can use alias expression which will then store the intermediate results of the repeater after the filters have been applied. 您可以使用别名表达式,该别名表达式将在应用过滤器后存储转发器的中间结果。
<div class="item item-divider bar bar-header bar-calm" ng-if="filteredElements.length>0">{{group.title}}</div>
<ion-list ng-repeat="item in group.acts | filter:colourFilter as filteredElements">
<ion-item >
<h3>{{item.title}}</h3>
{{item.start}} - {{item.end}}
</ion-item>
</ion-list>
正如您在上方链接的其他帖子所回答的那样,ngShow将在这种情况下工作。
<h3 ng-show="item.title != null">{{item.title}}</h3>
If group.acts.length greater than zero, show the title. 如果group.acts.length大于零,则显示标题。 Else, display none 否则,不显示
<ion-list ng-repeat="group in detailService.selected.days" >
<div ng-if="colourFilter.length>0" class="item item-divider bar bar-header bar-calm" >{{group.title}}</div>
<ion-list ng-repeat="item in group.acts | filter:colourFilter">
<ion-item >
<h3>{{item.title}}</h3>
{{item.start}} - {{item.end}}
</ion-item>
</ion-list>
</ion-list>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.