Ionic 4 子数组未定义,而索引正确

Posted

技术标签:

【中文标题】Ionic 4 子数组未定义,而索引正确【英文标题】:Ionic 4 sub array undefined while index is correct 【发布时间】:2020-04-04 20:42:07 【问题描述】:

我尝试使用console.log 查看值,但noticeSet2[index] 值未定义。当我打印 noticeSet 时,它会显示数组中的所有数据。我尝试在 console.log 中打印索引,它会显示与数组匹配的索引。

我尝试在主菜单的子菜单中创建一个子菜单,即 noticeSet 并且主菜单工作得很好。我尝试了类似的方法,但它不起作用。我现在需要解决的只是显示 noticeSet2[index] 值。谢谢

toggleItem(index, item) 

    //this.noticeSet2[index].open = !this.noticeSet2[index].open;

    console.log("here");
    console.log(this.noticeSet2[0]);
    console.log(this.noticeSet2[index]);
    console.log(index);

    let obj = resident_id: this.resident_id,id: item.id

    this.authService.postData(obj, "getSubCategoryList").then((result) =>
      this.responseData = result;
        if(this.responseData.feedData)
          //this.noticeSet2[item.id] = this.responseData.feedData;
          this.noticeSet3[this.noticeSet2[item.id]] = this.responseData.feedData;
          this.isDataAvailable = true;
        //console.log(this.noticeSet);
        
      , (err) => 
      );
  



<ion-list *ngFor="let item of noticeSet; let i = index;" lines="none"  class="accordion-list" detail="false"
    no-padding >

    <button ion-item tappble style="font-weight:bold;color:#424242;" (click)="getSubCategoryList(i,item)" [ngClass]="'section-active':item.open,'section':!item.open">
      <ion-icon item-right slot="end" name="arrow-forward" *ngIf="!item.open"
        style="font-size: 16px;font-weight: bold;"></ion-icon>
      <ion-icon item-right slot="end" name="arrow-down" *ngIf="item.open"
        style="font-size: 16px;font-weight: bold;color:rgb(74, 137, 220)"></ion-icon>
       item.title 
    </button>


    <div *ngIf="noticeSet2[item.id] && item.open">
      <ion-list *ngFor="let item of noticeSet2[item.id]; let j = index;" lines="none" class="child-list">
        <button ion-item  (click)="toggleItem(j,item)" *ngIf="item.title"
          [ngClass]="'child-active':item.open, 'child':!item.open">
          <ion-icon item-left slot="start" name="add" *ngIf="!item.open" style="font-size: 12px;font-weight: bold;">
          </ion-icon>
          <ion-icon item-left slot="start" name="close" *ngIf="item.open" style="font-size: 12px;font-weight: bold;">
          </ion-icon>
          <ion-label>
             item.title 
          </ion-label>
        </button>

        <div *ngIf="noticeSet3[this.noticeSet2[item.id]] && item.open">
         <ion-list  *ngFor="let item of noticeSet3[this.noticeSet2[item.id]]" class="child-list-list" lines="none">
          <ion-item class="child-item" *ngIf="item.title">
            <button ion-item >
              item.title
            </button>
          </ion-item>
        </ion-list>
      </div>

      </ion-list>
    </div>
  </ion-list>

【问题讨论】:

【参考方案1】:

这是因为你在 Promise 中使用了 value。 您有两种方法可以继续:

第一个是使用

.then( function() => [...]

而不是

.then((结果) => [...]

它会起作用的。

第二个是使用不在 内的特殊变量。

    var that = this;
// ...
.then(function()  that.variable )

希望对您有所帮助。

【讨论】:

感谢回复,我试过了,还是不行=3=

以上是关于Ionic 4 子数组未定义,而索引正确的主要内容,如果未能解决你的问题,请参考以下文章

未定义对象数组的离子存储

Ionic 4从模态传回数据未定义

带有 Ionic 4 的 SQLite?无法读取未定义类型错误的属性“then”:无法读取未定义的属性“then”

JSONSchema(草稿7)未验证数组的子定义

Swift 4 UIPageViewController 未显示正确的视图(按顺序在数组中定义

递归最大子数组未返回正确值