Ich habe eine einfache Ion-Liste und einen Filter, um die Elemente anzuzeigen, die einem bestimmten Schlüssel entsprechen: Wert; Ich weiß nicht, ob ich es richtig gemacht habe, wenn es einen besseren Weg gibt, sag es mir bitte.Angular 2 + ionic 2: Filterfunktion abhängig von * ngFür eine andere Seite
list.html
<ion-content class="listPage">
<button ion-item [ngClass]="{active: type =='all'}" (click)="filter('all')">all</button>
<button ion-item [ngClass]="{active: type =='red'}" (click)="filter('red')">red</button>
<button ion-item [ngClass]="{active: type =='blue'}" (click)="filter('blue')">blue</button>
<ion-list class="task-list">
<button ion-item class="task-item" *ngFor="#item of list" [hidden]="isFilter(item.type)">
<h2>{{item.title}}</h2>
<p>{{item.type}}</p>
</button>
</ion-list>
</ion-content>
LIST.JS
export class ListPage {
static get parameters() {
return [[NavController]];
}
constructor(nav) {
this.nav = nav;
this.typeFilter = 'all';
this.list = [
{
"title": "Anastasia T. Benton",
"type": "red"
},
{
"title": "Adena C. English",
"type": "blue"
},
]
}
filter(itemFilter) {
this.typeFilter = itemFilter;
}
isFilter(itemType) {
if (this.typeFilter == 'all') {
return false;
} else {
return itemType != this.typeFilter;
}
}
}
Bisher funktioniert es schön, zeigt es die richtigen Artikel Liste, wenn ich auf die Schaltfläche Korrespondent klicken.
Nun möchte ich diesen "Filter" auf ein Side-Menü, das auf app.js ist, setzen, aber dann funktioniert die Funktion nicht und ich weiß nicht, wie es zu beheben ist.
list.html
<ion-navbar *navbar>
<button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>List</ion-title>
</ion-navbar>
<ion-content class="listPage">
<ion-list class="task-list">
<button ion-item class="task-item" *ngFor="#item of list" [hidden]="isFilter(item.type)">
<h2>{{item.title}}</h2>
<p>{{item.type}}</p>
</button>
</ion-list>
</ion-content>
APP.HTML
<ion-menu [content]="content">
<ion-toolbar>
<ion-title>List Filter</ion-title>
</ion-toolbar>
<ion-content>
<ion-list>
<button ion-item [ngClass]="{active: type =='all'}" (click)="filter('all')">all</button>
<button ion-item [ngClass]="{active: type =='red'}" (click)="filter('red')">red</button>
<button ion-item [ngClass]="{active: type =='blue'}" (click)="filter('blue')">blue</button>
<button ion-item [ngClass]="{active: type =='orange'}" (click)="filter('orange')">orange</button>
<button ion-item [ngClass]="{active: type =='greene'}" (click)="filter('greene')">green</button>
</ion-list>
</ion-content>
</ion-menu>
<ion-nav id="nav" [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>
APP.JS
//i know i need to do something here. about dependencies, but i can't figure out how :/
Auch würde Ich mag zeigen etwas (kann ein sein), wenn das Ergebnis vom Filter eine leere Liste ist.
Ich habe diese Woche begonnen, Ionic 2 und Angular 2 zu lernen, und ich kämpfe damit. Das einzige, was ich bisher über Angular weiß, habe ich von "Shaping up with Angular.js" von CodeSchool gelernt. Ich kenne bereits eine Menge über html5, scss, jQuery und einige Basen auf Javascript. Ich kenne das Typoskript noch nicht.
Entschuldigung dafür, dass ich kein Live-Beispiel habe, aber ich weiß nicht, wie man einen mit eckigen erstellt. Sonst würde ich es tun.
Danke für die Hilfe.
Anstelle von [hidden] verwenden Sie auch ngIf, um zu steuern, ob die Schaltfläche angezeigt wird oder nicht. –