【问题标题】:How to display Json multiple data in html Nativescript如何在 html Nativescript 中显示 Json 多条数据
【发布时间】:2018-06-28 08:24:41
【问题描述】:

我有这个 JSON,我需要显示如下所有数据:

res {
   "StatusCode": 0,
   "StatusMessage": "OK",
   "StatusDescription": [
     {
       "sensors": [
         {
           "serial": "sensor1",
           "id": "1"
         },
         {
           "serial": "sensor2",
           "id": "2"
         },
         {
           "serial": "sensor3",
           "id": "3"
         }
       ],
       "HBP_id": "12",
       "HB_id": "123",
      "serial_number": "hb1",
      "note": "test"
    },
               {
       "sensors": [
         {
           "serial": "sensor4",
           "id": "4"
         },
         {
           "serial": "sensor5",
           "id": "5"
         },
         {
           "serial": "sensor6",
           "id": "6"
         }
       ],
       "HBP_id": "23",
       "HB_id": "234",
      "serial_number": "hb2",
      "note": "test"
    },
               {
       "sensors": [
         {
           "serial": "sensor7",
           "id": "7"
         },
         {
           "serial": "sensor8",
           "id": "8"
         }
       ],
       "HBP_id": "34",
       "HB_id": "345",
      "serial_number": "hb3",
      "note": "test"
    }
   ]
 }

我想在 html Nativescript 中显示这些数据:

产品 1:

系列: hb1

传感器: 传感器1 传感器2 传感器3

系列: hb2

传感器: 传感器3 传感器4 传感器5

系列: hb3

传感器: 传感器7 传感器8

我试过这段代码,但我只能显示第一个数据:

<ListView [items]="items" (itemTap)="onItemTap($event)">
                    <ng-template let-item="item" let-i="index" let-odd="odd" let-even="even">
                        <StackLayout [class.odd]="odd" [class.even]="even">
                            <Label [text]="item.serial_number"></Label>
                            <Label *ngFor="let subItem of item?.sensors" [text]="subItem.serial"></Label>
                        </StackLayout>
                    </ng-template>
                </ListView>

component.ts:

public items: Items[];
constructor(private service: ItemsService) {
}
public ngOnInit() {
    this.getallitems();
}

getallitems() {
    this.service.itemsGetAll().subscribe(
        items=> {
            console.log('itemsfrom ws',items) // show all 
            this.items= items;
        }
    );
}

service.ts

public itemsGetAll(): Observable<Items[]> {
    let headers = new Headers();
    headers.append('x-access-token', this.auth.getCurrentUser().token);
    return this.http.get(Api.getUrl(Api.URLS.itemsGetAll), {
        headers: headers
    })
        .pipe(map((response: Response) => {
            console.log('response', response)
            let res = response.json();
            if (res.StatusCode === 1) {
            } else {
                return res.StatusDescription.map(hbp => {
                    return hbp;
                });
            }
        }))
}

显示:

系列: hb1

传感器: 传感器1 传感器2 传感器3

你能问我,如何在项目中使用 *ngFor 吗?请问有什么办法吗?

更新: 我像这样更改我的html:

   <StackLayout [class.odd]="odd" [class.even]="even">
          <Label *ngFor="let item of items" [text]='"[" + item.serial_number +"] " + item?.sensors'></Label> 
   </StackLayout>

【问题讨论】:

  • 你能分享确切的items 数组吗?你分享的JSON不是数组,也许你提取StatusDescription但你说清楚就更好了。
  • 我用ts代码编辑我的帖子
  • 我询问了items 数组的内容,而不是代码或生成它的过程。获取并分享它,就像您在问题正文的第一个块中为 JSON 对象所做的那样!
  • 你能写任何例子吗,我不太明白。谢谢
  • items 打印到 ows 控制台,就像在 console.log('itemsfrom ws',items) // show all 行一样。

标签: arrays angular typescript nativescript angular2-nativescript


【解决方案1】:

你应该改成这样:

<ListView [items]="items?.StatusDescription" (itemTap)="onItemTap($event)">
  //Your code here
</ListView>

其余代码将相同!!!

【讨论】:

  • @site 使用这个this.service.itemsGetAll()..subscribe((items: any)=&gt; { this.items= items.StatusDescription;}); 其余代码将相同
  • 如果我在那里使用,项目未定义。console.log('itemsfrom ws',items) 正确显示所有数据。我认为问题出在html代码中。在我看来,没关系
【解决方案2】:

你可以试试这个解决方案

public items: Items[];
constructor(private service: ItemsService) {
}
public ngOnInit() {
    this.getallitems();
}

getallitems() {
    this.service.itemsGetAll().subscribe(
        items=> {
            console.log('itemsfrom ws',items) // show all 
            this.items= items.StatusDescription;
        }
    );
}

【讨论】:

  • 如果我在那里使用,项目未定义。console.log('itemsfrom ws',items) 正确显示所有数据。我编辑我的服务代码。我认为问题出在 html 中,在 ts 代码中所有数据都正确到达
  • 我在您的代码中看到您有 NativeScriptUI。我没有它们。重要吗?
猜你喜欢
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 2019-05-20
  • 2019-01-25
  • 1970-01-01
  • 2022-11-11
相关资源
最近更新 更多