在ionic2中恢复切换按钮状态

时间:2017-04-04 13:57:14

标签: ionic2 toggle

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;
&#13;
&#13;

问题是因为我正在改变状态changeStatus()被无限期地调用。如何防止这种情况并在其他条件下恢复切换按钮的前一个位置?

1 个答案:

答案 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; });
  }
}