2016-02-25 58 views
15

我的應用渲染正常,但爲什麼change事件函數updateItem(item)未被觸發?Ionic2切換組件更改事件未觸發

模板:

<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> 

類別:

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

看起來像https://github.com/driftyco/ionic/issues/5034我還沒有找到''來觸發'change'事件。你可以鏈接到文檔它觸發了什麼事件?我自己並不使用Ionic。 –

+0

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

+0

你嘗試過'ngModelChange'事件嗎? –

回答

32

根據該文檔,你可以這樣做:

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

希望能幫助你!

+0

嘿,謝謝。當我問這個問題時,這個問題沒有解決。但現在這是正確的。 – Dave

+1

ionChange應該在文檔中提到\t ionicframework.com/docs/v2/api/components/toggle/Toggle – Luckylooke

4

更新

<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(); } 
    ); 
    } 
    ... 
} 

[(ngModel)]="..."作品,這

(ngModelChange)="updateItem(item)" 

應該工作以及與可能做你試圖完成什麼。

+1

在進一步測試中,這不是一個令人滿意的答案,因爲它在首次呈現切換時調用change事件。這不是理想的結果。看起來(更改)事件不是觸發實際上是Ionic 2的最新測試版中的一個錯誤。 – Dave

1

如果初始值爲true,則ionChange無用,因爲它每次都會觸發。

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

希望這有幫助!