Ionic, ngFor как показать конкретный результат?

Внутри моего ионного приложения я создал функцию getApiData для получения данных из моей базы данных Django.

Я получаю серию всех данных, включая всех пользователей внутри, как я могу отобразить их только для определенного пользователя?

Ниже приведены мои данные json, у меня есть такие пользователи, как testuser, testproject 1 и так далее.

Если я хочу отображать только данные, принадлежащие testuser. Как мне это сделать ??

[{"fields": {"date": "2018-04-16", "duration": 10, "fee": "0.06", "status": "Unpaid", "user": "testuser"}, "model": "apidb2.record1", "pk": 1}, {"fields": {"date": "2018-04-16", "duration": 30, "fee": "0.20", "status": "Unpaid", "user": "testuser"}, "model": "apidb2.record1", "pk": 2}, {"fields": {"date": "2018-04-16", "duration": 35, "fee": "0.23", "status": "Unpaid", "user": "testuser"}, "model": "apidb2.record1", "pk": 3}, {"fields": {"date": "2018-04-16", "duration": 60, "fee": "0.40", "status": "Unpaid", "user": "testuser"}, "model": "apidb2.record1", "pk": 4}, {"fields": {"date": "2018-04-17", "duration": 30, "fee": "0.20", "status": "Unpaid", "user": "testuser"}, "model": "apidb2.record1", "pk": 5}]

Это моя кодировка для получения данных из API.

 getApiData_record() {
    this.restProvider.getApiData_record().then(data =>{
      this.users = data;
      var totalDuration=0;
      var totalFee = 0.00;
      var fee1 = [];

      if (this.users.fields.user = this.pushname){
        for (var i of this.users){
        fee1.push(i.fields.duration);
      }
    }
      for (var j=0; j < fee1.length; j ++){
        console.log("here", fee1[j])
        totalDuration = totalDuration + fee1[j];
      }
      totalFee = totalDuration/60 * 0.80 ;
      this.totalFee = totalFee;
      this.totalDuration = totalDuration;
      console.log("Record Here", data, totalDuration)

    })
  }

Это html того, как я это показываю.

 <ion-item *ngFor="let user of users">
    <ion-row>
      <ion-col col-4>
        {{user.fields.date}}
      </ion-col>
      <ion-col col-4>
        {{user.fields.duration}} Minute
      </ion-col>
      <ion-col col-4>
        &nbsp; &nbsp; &nbsp; RM {{user.fields.fee}}
      </ion-col>
    </ion-row>
  </ion-item>

Кто-нибудь знает, как показать только конкретного пользователя, например только testuser? Я получил testuser внутри глобальной переменной, подобной этой

 this.pushname = navParams.get('pushName');

Это pushname является переменной, которую я хочу отобразить. Если мое pushname, которое я получил, — testuser, то я отображаю только данные testuser.

Помогите мне, пожалуйста !!! Спасибо, я новичок в ionic, но это спасет мне жизнь. Спасибо. Ценить !!!!


person Community    schedule 17.04.2018    source источник


Ответы (1)


Хорошо, после того, как иногда у меня есть решение для этого, я просто добавляю простое условие if в свой файл .ts.

Я меняю это..

 getApiData_record() {
    this.restProvider.getApiData_record().then(data =>{
      this.users = data;
      var totalDuration=0;
      var totalFee = 0.00;
      var fee1 = [];
  if (this.users.fields.user = this.pushname){
    for (var i of this.users){
    fee1.push(i.fields.duration);
  }
}
  for (var j=0; j < fee1.length; j ++){
    console.log("here", fee1[j])
    totalDuration = totalDuration + fee1[j];
  }
  totalFee = totalDuration/60 * 0.80 ;
  this.totalFee = totalFee;
  this.totalDuration = totalDuration;
  console.log("Record Here", data, totalDuration)

})
}

к этому

getApiData_record() {
    this.restProvider.getApiData_record().then(data =>{
      this.users = data;
      var totalDuration=0;
      var totalFee = 0.00;
      var fee1 = [];
      var record1 = [];
      this.newdata = record1;

        for (var i of this.users){
          if(i.fields.user == this.pushname){
            record1.push(i)
            fee1.push(i.fields.duration);
            console.log("123", fee1, i.fields.duration, i.fields.user, this.pushname, this.newdata)
          }
      }
      for (var j=0; j < fee1.length; j ++){
        console.log("here", fee1[j])
        totalDuration = totalDuration + fee1[j];
      }
      totalFee = totalDuration/60 * 0.80 ;
      this.totalFee = totalFee;
      this.totalDuration = totalDuration;
      console.log("Record Here", data, totalDuration)

    })
  }

Я просто добавляю условие if, если мой fields.user == this.pushname (который является моим идентификатором), затем я помещаю его в массив новых данных, и я ngFor в своем бэкэнде, чтобы показать эти новые данные, не стесняйтесь предоставлять другое решение, надеюсь, что это поможет другим столкнуться с этой проблемой.

person Community    schedule 17.04.2018