ionic3 关于*ngFor 嵌套多层循环的用法详解

本文参考链接:详解Angular2 关于*ngFor 嵌套循环

目前已经用ionic开发的同学大多都会遇到一个问题,如何把一个数据集合按照预期展示在html页面,本文以下会罗列 多层数据嵌套 如何 循环遍历 并展示的问题.

1.我们先罗列几种格式的数据:
 // 1.数组 ->字典
   datas: Array<any> = [
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24" },
 ];
   // 2.数组 ->字典->数组
   data2: Array<any> = [
  { num1:  [
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "21" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "22" }] },

  { num2:  [
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "23" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24" }] },
  
  { num3: [
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "25" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "26" }] }

 ];
  // 3.数组 ->数组
    data4: Array<any> = [
   [
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "21" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "22" }] ,

 [
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "23" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24" }] ,

  [
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "25" },
  { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "26" }] 

 ];
 // 4.字典->数组->字典->数组  (页面显示的为这个数据,四层嵌套)
 data5 = {
  '1':[ { num: [ "2017-04-12", "1231234", "1233", "21" ]},
        { num: [ "2017-04-12", "1231234", "1233", "22" ]}
      ] ,

  '2': [
        { num: [ "2017-04-12", "1231234", "1233", "23" ]},
        { num: [ "2017-04-12", "1231234", "1233", "24" ]}
        ] ,
  '3': [
        { num: [ "2017-04-12", "1231234", "1233", "25" ]},
        { num: [ "2017-04-12", "1231234", "1233", "26" ]}
        ] 
 }
// 5.字典->数组->字典
  data6 = {
  '1':[ {num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "21"},
        { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "22"}
      ] ,

  '2': [
        { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "23"},
        {num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "24"}
        ] ,
  '3': [
        { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "25"},
        { num: 1, date: "2017-04-12", sellNum: "1231234", sellMpney: "1233", returnNum: "26"}
        ] 
 }
2.给大家一一截图了展示效果
![Uploading data2_827681.png . . .]
data2.png
data4.png
data5.png
data6.png
关键代码
 getKeys(item) {
  return Object.keys(item);
 }
html页面代码
<ion-header>
  <ion-navbar>
    <ion-title>
      Contact
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content>

<!--解析datas-->
    <!--<ion-row *ngFor="let item of datas">
      <ion-col *ngFor="let key of getKeys(item)"> 
       {{item[key]}}
       </ion-col>
    </ion-row>-->

<!--解析data2-->
    <!--<ion-col *ngFor="let item of data2">
      <ion-col *ngFor="let key of getKeys(item)"> 
        <ion-row *ngFor="let item2 of item[key]">{{ item2.returnNum }}</ion-row>
       </ion-col>
    </ion-col>-->

<!--解析data4-->
  <!--<ion-row *ngFor="let item of data4">

      <ion-col *ngFor="let item2 of item">
        <ion-col *ngFor="let key of getKeys(item2)">{{item2[key]}}</ion-col>
      </ion-col>  
  </ion-row>-->

<!--解析data5-->
  <div *ngFor="let key of getKeys(data5)">
    <ion-col *ngFor="let item of data5[key]">
      <ion-col *ngFor="let key of getKeys(item)"> 
        <ion-row *ngFor="let item2 of item[key]">{{ item2 }}</ion-row>
       </ion-col>
    </ion-col>
  </div>
  
  <!--解析data6-->
  <!--<ion-row *ngFor="let key of getKeys(data6)">
    <ion-col *ngFor="let item of data6[key]">
        <ion-col *ngFor="let key of getKeys(item)"> {{ item[key] }}</ion-col>

     </ion-col>
  </ion-row>-->


</ion-content>

附: *ngFor 是 Angular的语法,想深究的同学可以参考Angular官网,也可以参考此链接

这里给大家提供一个调试数据的小技巧,我们通常使用ionic开发都会使用一个http的插件

import { HTTP } from '@ionic-native/http'
//或者这个
import {Http} from '@angular/http';

在我们发送网络请求的时候可能在浏览器上输出不了请求到的数据,这个时候我们通常会用模拟器来跑,这样调试起来就非常麻烦了,现在我们可以这样做,把数据摘出来(代码如下),用本地数据调试html,可以正常展示了再接上请求到的数据 整体跑一下,这样可以节省不少调试时间.

如果其他同学关于调试数据还有更好的方法,欢迎@我,也欢迎大家加入QQ群 64903116 讨论ionic开发中的各种问题;

export class ISSConfig {

    static loadData: any = {
        "errCode": "000000",
        "errDesc": "",
        "svcFlowNo": "11730KNRDRAKCCA5",
        "cliFlowNo": "111111",
        "object": {
            "pageRow": 0,
            "startPage": 0,
            "totalRow": 7,
            "list": [
                {
                    "date": "20170428",
                    "firstTime": "09:59:17",
                    "lastTime": "17:33:48",
                    "hour": 7,
                    "minute": 34,
                    "minute2": 454
                },
                {
                    "date": "20170430",
                    "firstTime": "17:33:48",
                    "lastTime": "17:33:48",
                    "hour": 0,
                    "minute": 0,
                    "minute2": 0
                }
            ]
        }

    }
}

本文demo已经上传到github,有需要的请自行下载
(下载demo的同学请注意,此代码是写在Contact页面的,不要找错了哦)

https://www.51zxw.net/study.asp?vip=21645582

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容