【问题标题】:Displaying retrieved firebase data from database in HTML file with Ionic 3使用 Ionic 3 在 HTML 文件中显示从数据库中检索到的 firebase 数据
【发布时间】:2018-09-14 17:09:28
【问题描述】:

如何显示从我的 firebase 数据库中检索到的数据?我需要能够显示数据并将其组织在 HTML 文件中。作为初学者,我想简单地展示客户用户的第一个。我还想最终使它可点击,因为我计划将瘦用户的数据放入模态页面。另外,我不确定当数据库中有多个用户时这将如何工作,因此如果有人可以解释该过程,将不胜感激。我附上了一张我的数据库以及 Javascript 和 HTML 文件的图片。感谢所有帮助。谢谢。

我的数据库模型

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, ModalController, Modal } from 'ionic-angular';
import { DriverHomePage } from '../driver-home/driver-home';
import { CustomerModalPage } from '../customer-modal/customer-modal';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFireDatabase, FirebaseObjectObservable } from 'angularfire2/database';
import * as firebase from 'firebase';

/**
 * Generated class for the DriverHomePage page.
 *
 * See https://ionicframework.com/docs/components/#navigation for more info on
 * Ionic pages and navigation.
 */

@IonicPage()
@Component({
  selector: 'page-driver-home',
  templateUrl: 'driver-home.html'
})
export class DriverHomePage {

  const custRef = firebase.database().ref().child('User').orderByChild('type').equalTo('customer').on('value', function(snapshot) {
    snapshot.forEach(function(child) {
      var data = child.val();
      console.log(data.firstName + ' ' + data.lastName + ' ' + data.location  );
    });
  }, function(error) {
    // The Promise was rejected.
    console.log('Error: ',error);
});

  constructor(private modalCtrl: ModalController, private afAuth: AngularFireAuth, private afDatabase: AngularFireDatabase, public navCtrl: NavController, public navParams: NavParams) {

  }

  /*openModal(){
  //const custData

    const custModal: Modal = this.modalCtrl.create('CustomerModalPage');

    custModal.present();

    custModal.onDidDismiss();
  }*/

  ionViewDidLoad() {
    console.log('ionViewDidLoad DriverHomePage');
  }

}
<!--
  Generated template for the DriverHomePage page.

  See http://ionicframework.com/docs/components/#navigation for more info on
  Ionic pages and navigation.
-->
<ion-header>

  <ion-navbar>
    <button ion-button menuToggle>
      <ion-icon name="menu"></ion-icon>
    </button>
    <ion-title>driver-home</ion-title>
  </ion-navbar>

</ion-header>


<ion-content padding>

  <div padding>
    <p>I WANT TO DISPLAY FIRST NAME HERE</p>
  </div>



</ion-content>

【问题讨论】:

  • 这是一个离子问题。我的 2 美分:坚持使用普通的 HTML/CSS/JS。 Ionic 是一个框架(Angular)的框架,肯定会像所有框架一样消失e.g. [jQuery]。 ……这只是我的看法。祝你好运。
  • 是否要显示“type”等于“customer”的所有用户?
  • @SarasaGunawardhana 是的。该计划是列出所有具有“客户”类型的用户。我希望将每个用户的姓名显示为某种项目,然后让员工用户能够单击该用户并查看包含该客户信息的模式。

标签: html angular firebase ionic-framework firebase-realtime-database


【解决方案1】:
    users = [];

    constructor(private modalCtrl: ModalController, private afAuth: AngularFireAuth, private afDatabase: AngularFireDatabase, public navCtrl: NavController, public navParams: NavParams) {

       firebase.database().ref().child(`/user`).orderByChild('type').equalTo('customer').once( "value", ( snapshot )=>{
          let result = snapshot.val(); //snapshot.val() gives key value pairs
          //you can make object array to show data on html using *ngFor
          for(let k in result){
              this.users.push({
                 id : k, //gives key of each object
                 value : result[k] //gives user values
              })
          }
       });
    }

你可以像这样使用实现modal的功能在构造函数之后显示。

opneModal(object){
     var obj = { //edited
        id : object.id , 
        firstname : object.value.firstName, 
        location : object.value.location }
    var modalPage = this.modalCtrl.create('YourModalPage',obj); //edited
    modalPage.onDidDismiss(data => {

    });
    modalPage.present();
}

HTML

    <ion-list *ngFor="let user of users">
        <ion-item (click)="openModal(user)">

          <p>{{user.id}}</p>
          <p>{{user.value.firstName}}</p>
          <p>{{user.value.location}}</p>
        </ion-item>
    </ion-list>

YourModalPage

的构造函数中使用navprams点击客户时,可以从YourModalPage获取单个客户的数据

让 user_first_name = navParams.get("firstname"); //已编辑 让位置= navParams.get("位置"); //已编辑

How To Create Modal and its behavior

【讨论】:

  • 感谢您的快速回复。到目前为止,该解决方案适用于主页。但是,当我单击用户时,会出现此错误。请告诉我如何解决这个问题。错误:未捕获(承诺中):错误:无法解析 CustomerModalPage 的所有参数:(?,[object Object],[object Object],[object Object])。错误:无法解析 CustomerModalPage 的所有参数:(?, [object Object], [object Object], [object Object])。
  • 我已经编辑了 OpenModal() 函数内部的代码。尝试像这样访问数据 let user_first_name = navParams.get("firstname");
  • stackoverflow.com/a/38541707/7724032 错误:无法解析 CustomerModalPage 的所有参数 如果上述解决方案不适合您,请尝试此方法
  • 我正在寻找第二种可能的解决方案,因为编辑后的代码没有解决问题。我会用什么来代替 paramsId?
猜你喜欢
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 2020-12-12
相关资源
最近更新 更多