单击每个字段时如何显示和隐藏离子卡?

Posted

技术标签:

【中文标题】单击每个字段时如何显示和隐藏离子卡?【英文标题】:How do I show and hide ion-card when clicked per field? 【发布时间】:2020-08-19 16:47:51 【问题描述】:

当我点击一个更新按钮时。

它显示了与其对齐的所有数据/字段的所有离子卡,这不是我想要的,它也不会再次隐藏卡/s。

那么,当点击特定按钮以及每个数据/字段时,如何显示/隐藏卡片?

顺便说一下,我的数据是 JSON 格式的。

这是我的 page.ts 代码

//comment this if you gonna use api url
 private prepareDataRequest(): Observable<any>   // <-- change return type here
  // Define the data URL
  const dataUrl = 'assets/data/data.json';
  // Prepare the request
  return this.http.get(dataUrl);


orders= [];
ionViewWillEnter() 
  // Load the data
  this.prepareDataRequest().subscribe( //comment this if you will use Api Url
  //this.dataService.getRemoteData().subscribe(
    data => 
      // Takes data into in single Array and print 
      this.orders = data.output.Result.OrderTracker;
    ,
    err => 
      // Set the error information to display in the template
      this.error = `An error occurred, the data could not be retrieved: Status: $err.status, Message: $err.statusText`;
    
  );


hide() 
    this.hideMe = true;
  

这是我的 page.html 代码

<ng-container *ngIf="!error; else errorContent">
    <p *ngFor="let order of orders">
       order?.ordernumber || '-'  - order?.status || ''  - order?.date || ''  - order?.time || '' 
      <ion-button ion-button (click)="hide()">UPDATE</ion-button>
      <ion-card *ngIf="hideMe">
        <ion-card-header>
          <ion-card-title>UPDATE  order?.ordernumber || '-'  </ion-card-title>
        </ion-card-header>
        <ion-card-content>
          <ion-input type="text" placeholder="Enter Status"></ion-input>
          <ion-input type="date" placeholder="Enter Date"></ion-input>
        </ion-card-content>
      </ion-card>
    </p>
  </ng-container>

【问题讨论】:

【参考方案1】:

您可以使用数组的索引来显示/隐藏单个项目的详细信息。

<ng-container *ngIf="!error; else errorContent">
    <p *ngFor="let order of orders; let i=index;">
       order?.ordernumber || '-'  - order?.status || ''  - order?.date || ''  - order?.time || '' 
      <ion-button ion-button (click)="hide(i)">UPDATE</ion-button>
      <ion-card *ngIf="currentDisplayIndex==i">
        <ion-card-header>
          <ion-card-title>UPDATE  order?.ordernumber || '-'  </ion-card-title>
        </ion-card-header>
        <ion-card-content>
          <ion-input type="text" placeholder="Enter Status"></ion-input>
          <ion-input type="date" placeholder="Enter Date"></ion-input>
        </ion-card-content>
      </ion-card>
    </p>
  </ng-container>

在.ts文件中,添加一个变量:

currentDisplayIndex:number=-1; 

这将保存要显示的当前项目的索引。 -1 表示不应显示任何项目的详细信息。

接下来,将当前项目的索引从模板传递给 hide() 方法

    hide(index) 

  if(this.currentDisplayIndex==index)
   
     this.currentDisplayIndex=-1; //Reset the index if the current item index is same as the item index passed on button click
     return; //Don't execute further
   
   this.currentDisplayIndex = index; //Set the current index to the item index passed from template. If you click on item number 3, only 3rd item details will be visible
      

【讨论】:

谢谢!它只显示特定的项目/数据/字段。但是当我再次点击更新按钮时它并没有隐藏。 更新了我的答案。现在,如果再次单击相同的按钮,详细信息将隐藏。如果您遇到任何错误,请告诉我。如果它符合您的目的,请将其标记为答案。 :)

以上是关于单击每个字段时如何显示和隐藏离子卡?的主要内容,如果未能解决你的问题,请参考以下文章

单击隐藏选项卡视图控制器中的后退按钮时如何显示选项卡

如何使用 jQuery 切换选项卡,而不关闭相邻的选项卡。

angularjs显示/隐藏选项卡,单击相同选项卡隐藏内容

如何在悬停而不是单击时使用 twitter 引导选项卡?

在 django 中单击管理员的选择字段后如何隐藏或显示模型字段

用户单击删除按钮时如何获取当前(添加)按钮