从 firebase 创建动态卡片 Ionic v2

Posted

技术标签:

【中文标题】从 firebase 创建动态卡片 Ionic v2【英文标题】:Create dynamic cards Ionic v2 from firebase 【发布时间】:2017-09-28 16:48:23 【问题描述】:

我正在尝试从我的 firebase 数据库中创建动态离子卡。我正在使用 ngFor,但每张卡都包含一系列按钮。当我创建卡片时,它们都会获得所有可用的按钮。我怎样才能让它们只创建链接到它们的按钮?或者有更好的方法吗?

Ts

databaseRef.on("child_added",(snapshot)=>
  var cat=snapshot.child("Name").val();
  var icon=snapshot.child("Icon").val();
  this.types.push(
    title: cat,
    icon: icon
  );
  var cardLists= document.getElementsByClassName("cardList");

  console.log(cardLists.namedItem); 
  databaseRef2=database.ref().child("Catalogos").child(cat).child("SubCatalogos");
  databaseRef2.on("child_added",(snapshot)=>
    var sub=snapshot.child("Name").val();
    var icn=snapshot.child("Icon").val();
    var owner=snapshot.child("Owner").val();
    console.log(cat);
    console.log(owner);
    this.generes.push(
      title:sub,
      icon:icn,
      Owner:owner,
      previous:cat
    );
  );
);

HTML

<ion-card   *ngFor="let item of types" >
<ion-card-header color="light">
  item.title
  <ion-icon name="item.icon"></ion-icon>
  <ion-buttons end>
    <button ion-button color='light' clear>
      <ion-icon name='brush'></ion-icon>
    </button>
    <button ion-button color="light" clear (click)="presentPrompt2(item)" >
      <ion-icon name="add-circle"></ion-icon>
    </button>
  </ion-buttons>
</ion-card-header>
<ion-list id="cardList" >
  <button ion-item class="SubCards" *ngFor="let item of generes" (click)="itemTapped($event, item)">
    <ion-icon name="item.icon"  item-left></ion-icon>
    item.title
  </button>
</ion-list> 

JSON 结构

"Catalogos" : 
"Books" : 
  "Icon" : "book",
  "Name" : "Books",
  "SubCatalogos" : 
    "Comedy" : 
      "Icon" : "happy",
      "Name" : "Comedy",
      "Owner" : "Books"
    
  
,
"Magazines" : 
  "Icon" : "book",
  "Name" : "Magazines",
  "SubCatalogos" : 
    "Horror" : 
      "Icon" : "book",
      "Name" : "Horror",
      "Owner" : "Magazines"
    
  


(如果我使用 createElement() 创建所有内容并自己制作所有内容,则它可以正常工作,但是根本没有卡片出现) 完整代码在链接here

【问题讨论】:

您可以检查卡片是否需要所有带有布尔值的按钮。在示例中,按钮 1 具有 isneeded=false;然后在创建卡片之前,您可以使用 ngIf 检查此布尔值是否为真。如果它不为真,则将按钮设置为“不可见”,如果为真,则将按钮设置为“可见”。 【参考方案1】:

所以我设法解决了这个问题,我所做的是嵌套在第一个 ngIf 中以验证名称是否匹配,在该 ngIf 中我嵌套了另一个 For。我还更改了 JSON,取出所有 SubCatalog 并将其设为一个单独的节点,并为每个指向它所属的目录添加一个“父”键。

【讨论】:

以上是关于从 firebase 创建动态卡片 Ionic v2的主要内容,如果未能解决你的问题,请参考以下文章

动态检索 Firebase 数据库文本并将文本数据添加到卡片视图

如何从firebase中删除文档

使用 Ionic 从 Firebase 显示值时遇到问题

与 Firebase 和 Ionic 的通用链接

(IONIC - Angular)我如何在 html 卡片中仅显示符合特定条件的 JSON 中的某些对象?

从 firebase 中删除创建的动态链接并使用 firebase 控制台创建新的自定义 URL