2017-04-04 138 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