2016-02-25 14 views
15

Meine App ist in Ordnung, aber warum sollte die Event-Funktion updateItem(item) nicht feuern?Ionic2 Toggle Komponente ändern Ereignis nicht feuern

Vorlage:

<ion-list> 
    <ion-item-sliding *ngFor="#item of items"> 
     <ion-item> 
     <ion-label>{{item.title}}</ion-label> 
     <ion-toggle [(ngModel)]="item.completed" (change)="updateItem(item)"></ion-toggle> 
     </ion-item> 
     <ion-item-options> 
     <button primary (click)="editItem(item)"> 
      <ion-icon name="edit"></ion-icon>Edit 
     </button> 
     <button secondary (click)="deleteItem(item)"> 
     <ion-icon name="delete"></ion-icon>Delete 
     </button> 
     </ion-item-options> 
    </ion-item-sliding> 
    </ion-list> 

Klasse:

export class Todos { 
... 
    updateItem(item) { 
    alert(1) 
    this._todosService.update(item).subscribe(
     response => { this.getItems(); } 
    ); 
    } 
... 
} 
+1

Sieht aus wie https://github.com/driftyco/ionic/issues/5034 Ich habe '' nicht gefunden, um ein 'Change'-Ereignis auszulösen. Können Sie Dokumente verlinken, welche Ereignisse ausgelöst werden? Ich benutze Ionic nicht selbst. –

+0

http://ionicframework.com/docs/v2/api/components/toggle/Toggle/ – Dave

+0

Haben Sie das Ereignis "ngModelChange" probiert? –

Antwort

32

Nach dem doc, können Sie das tun:

<ion-toggle [(ngModel)]="item.completed" (ionChange)="updateItem(item)" checked="false"></ion-toggle> 

Hoffnung werden Ihnen helfen!

+0

Hey danke. Ja, das hat nicht funktioniert, als ich die Frage gestellt habe. Aber das ist jetzt richtig. – Dave

+1

ionChange sollte in Dokument \t ionicframework.com/docs/v2/api/components/toggle/Toggle erwähnt werden – Luckylooke

4

Update

<ion-toggle [(ngModel)]="itemCompleted"></ion-toggle> 
export class Todos { 
    get itemCompleted() { 
    return item.completed; 
    } 
    set itemCompleted(value) { 
    item.completed = value; 
    updateItem(item); 
    } 

    ... 
    updateItem(item) { 
    alert(1) 
    this._todosService.update(item).subscribe(
     response => { this.getItems(); } 
    ); 
    } 
    ... 
} 

original

Wenn [(ngModel)]="..." Werke dieses

(ngModelChange)="updateItem(item)" 

sollte auch funktionieren und wahrscheinlich tun, was Sie zu erreichen versuchen.

+1

Bei weiteren Tests ist dies keine befriedigende Antwort, da das Änderungsereignis aufgerufen wird, wenn die Schalter zum ersten Mal gerendert werden. Dies ist nicht das gewünschte Ergebnis. Es scheint, dass das (ändernde) Ereignis, das nicht feuert, tatsächlich ein Fehler in der neuesten Beta von Ionic 2 ist. – Dave

1

Wenn der Initialwert true ist, ist ionChange nicht nützlich, weil es jedes Mal ausgelöst wird.

<ion-toggle [(ngModel)]="item.completed" (ngModelChange)="updateItem(item)"></ion-toggle> 

Hoffe, das ist hilfreich!