2017-04-04 97 views
1

ionChange我檢查一些條件,如果condtion設置爲false我想恢復切換按鈕的位置。下面是相關代碼恢復在ionic2切換按鈕狀態

changeStatus(item) { 
 
    if(this.mqttservice.response) { 
 
     //doing smthg 
 
    } 
 
    else { 
 
     item.status =!item.status; 
 
     //bring back the toggle to previous position 
 
    } 
 
}
<ion-toggle [(ngModel)]="item.status" (ionChange)="changeStatus(item);" checked="false">

的問題是,因爲我改變了狀態changeStatus()無限期地叫。如何防止這種情況並在其他情況下恢復切換按鈕上一個位置?

回答

0

[()]語法表示您正在獲取更新當變量發生變化時發佈更新。由於您使用(ionChange)可以使用[]語法代替,這意味着它只能獲取更新(但不會張貼)

<ion-toggle [ngModel]="item.status" (ionChange)="changeStatus($event, item);"> 

由於切換按鈕改變其狀態,以便爲「改回「你需要來回切換值。您可以通過設置該值來解決此問題,如果失敗,則可以通過添加setTimeout「將來」觸發更改。

public changeStatus(newValue: boolean, item: Item) { 
    item.status = event; 
    if (allGood) { 
    // do something 
    } 
    else { 
    // revert to old value 
    setTimeout(() => { item.status = !event; }, 0); 
    } 
} 
+0

我試着按照你的建議,但我不能帶回切換到先前的位置@Patrick – Lisa

+0

@Lisa更新了我的答案。 – Patrick