フィルタを入れ子にしたリストを持っています。イオン角度ネストされたngリピートフィルター、空の場合はタイトルを隠す
days:[
{name:"monday", acts[{title:"Zumba",start:"10am",end:"11am"},{}..]}...
]
フィルターが良い作品が、私はフィルタがその日の0活動を返したときに日ヘッダー(group.title)を非表示にしたいと思います:
オブジェクトは次のようになります。
私はこのようないくつかの答えが見つかりました:AngularJS - hide parent element if children loop is empty (filtered)
をそして、いや、成功して実装してみました。
これは私のコードです:
ビューあなたは答えの上にリンクされ、他のポストとして
<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('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;
}
});
よろしく
その他の設定はすべて正しくなっていますか?期待どおりのng-repeatの出力ですか? –
'group.title'、' item.title'、 'item.start'、' item.end'のデータは教えてください –
@ThomasJuranekはい、データは適切にフィルタリングされていますが、例えば "ヨガ」と月曜日にその存在だけで、出力は次のようになります。 月曜日 ヨガ 木曜日 水曜日 火曜日 金曜日 土曜日 私が表示したい: 月曜日@CharanCherry group.title =は名前がある – llermaly