为什么这个循环循环通过未指定的元素?

时间:2017-06-25 09:48:01

标签: javascript angular loops ionic-framework for-of-loop

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

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

以下是模板:

<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?

0 个答案:

没有答案