开ionChange
我正在检查某些条件,如果condtion设置为false我想恢复前一个位置的切换按钮。这是相关代码
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">
&#13;
问题是因为我正在改变状态changeStatus()
被无限期地调用。如何防止这种情况并在其他条件下恢复切换按钮的前一个位置?
答案 0 :(得分:1)
[()]
语法表示您在变量更改时获取更新和发布更新。由于您使用的是(ionChange)
,因此您可以使用[]
语法,这意味着它只会获得更新(但不会发布)
<ion-toggle [ngModel]="item.status" (ionChange)="changeStatus($event, item);">
由于切换按钮改变其状态,为了使其“改回”,您需要来回切换值。您可以通过设置值来解决此问题,然后如果失败,则通过添加setTimeout
来触发“将来”更改。
public changeStatus(event: boolean, item: Item) {
item.status = event;
if (allGood) {
// do something
}
else {
// revert to old value
setTimeout(() => { item.status = !event; });
}
}