需求: 从后端传来List<Map<String,Object>>集合,需要遍历展示在界面上,要求如果zt为0表示没有评价,单选框可以操作;如果zt为 1表示已经评价,需要将选定结果展示出来,不能进行更改
结构如下:

// 单选
[{  
    zt: "1"
	zbid: "218",     
	zblx: "1",   // 1--单选     4--问答
	zbmc: "仪态",
	pjjg: "A",    // 选择的结果
	zbxx:[   // 五个选项
		   ["xxbm":"A","xxmc":"极好"],
		   ["xxbm":"B","xxmc":"良好"],
	       ["xxbm":"C","xxmc":"一般"],
	       ["xxbm":"D","xxmc":"较差"],
	       ["xxbm":"E","xxmc":"极差"],
		]
   },
{
...
},
...
]

解决思路:

  1. 对于zt="1"的不能再更改,本来想实现单选框或者文本区域不能动,未实现,于是在zt="1"的时候隐藏更改按钮使数据不能提交
  2. 选项的展示如下,zt/zblx/zbmc等的展示容易实现,如下:
<ion-content>
 <div class="box-y gwfxsh_item" *ngFor="let item of pjjgArray;let i=index">
   <!-- 单选 -->

   <div *ngIf="item['zblx']=='1'">
     <label>{{ item['zbid'] }}</label>
     <label class="label_name">{{i+1}} {{item['zbmc']}}</label>
     <label>({{ item['zbdf']}})</label>
     <label>{{ daArray[i].zbvalue }}</label>
     <ion-list no-lines radio-group no-margin no-padding [(ngModel)]="daArray[i].zbvalue">
       <ion-item *ngFor="let it of item['zbxx']">
         <ion-label>{{ it['xxbm']}} {{it['xxmc']}}</ion-label>
         <ion-radio item-end [value]="it['xxbm']"></ion-radio>
       </ion-item>
     </ion-list>
   </div>

   <!-- 回答 -->
   <div *ngIf="item['zblx']=='4'">
     <label>{{ item['zbid'] }}</label>
     <ion-list no-margin no-padding no-lines>
       <label class="label_name">{{i+1}} {{item['zbmc']}}</label>
       <labeL>({{ item['zbdf']}})</labeL>
       <label>{{ daArray[i].zbvalue }}</label>
       <ion-textarea style="border: 1px solid #DDDDDD;"  [(ngModel)]="daArray[i].zbvalue"></ion-textarea>
     </ion-list>
   </div>
 </div>
</ion-content>
  1. 对于在这个过程中需要发生变化的选中的选项,创建并加入到数组中,实现双向绑定,注意ngModel的位置
this.daArray = [];   // 注意这里要进行初始化,否则是不可以往里面传值的
   // this.daArray.push("a", "b", "c");
   // 遍历每一条评价记录,
   this.pjjgArray.map((pj) => {
     this.daArray.push({
       // pid: this.pjid,      // 问题的ID还是评价的ID?
       zblx: pj["zblx"],
       zbid: pj["zbid"],
       zbmc: pj["zbmc"],
       zbvalue: pj["pjjg"],
     });
   });

效果图:
在这里插入图片描述
在这里插入图片描述

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐