0

我正在创建一个包含项目和子项目的清单。我有一个按钮来重置所有复选框,我需要检查项目是否都被选中,但不是子项目。

但是我的检查代码记录了所有的清单框,而不仅仅是项目。

这是模板:

<ion-list>
      <ion-item *ngFor='let listitem of checkdetail.contents; let i=index'>
        <ion-label class="mainitem" *ngIf="listitem.flavour === 'item'" text-wrap>{{listitem.content}}</ion-label>
        <ion-checkbox color="primary" checked="false" *ngIf="listitem.flavour === 'item'" [(ngModel)]="item_ticks[i]" (ionChange)="updateTicks()"></ion-checkbox>

        <ion-label class="subitem" *ngIf="listitem.flavour === 'subitem'" text-wrap>{{listitem.content}}</ion-label>
        <ion-checkbox color="secondary" checked="false" *ngIf="listitem.flavour === 'subitem'" [(ngModel)]="subitem_ticks[i]" ></ion-checkbox>
      </ion-item>
    </ion-list>

这是代码:

item_ticks = [];
    subitem_ticks = [];

    updateTicks() {
        for(var item of this.item_ticks){
            console.log(item);
        }
    }

    resetTicks() {
        let alert = this.alertCtrl.create({
            title: 'Reset?',
            message: 'Are you sure?',
            buttons: [
              {
                text: 'Cancel',
                role: 'cancel',
                handler: () => {
                  console.log('Cancel clicked');
                }
              },
              {
                text: 'Reset',
                handler: () => {
                    for (var i = 0; i < this.item_ticks.length; i++){
                        this.item_ticks[i] = false;
                    }   
                    for (var i = 0; i < this.subitem_ticks.length; i++){
                        this.subitem_ticks[i] = false;
                    }
                    let toast = this.toastCtrl.create({
                      message: 'Checklist reset',
                      duration: 1000,
                      position: 'top'
                    });
                    toast.present();
                }
              }
            ]
          });
          alert.present();
    }

为什么 updateTicks() 中的循环会同时注销 this.item_ticks 和 this.subitem_ticks?

4

0 回答 0