当前位置: 首页 > 知识库问答 >
问题:

如何在ionic 4中刷新页面

柳胜
2023-03-14

我想在成功删除数据后刷新页面。当我删除或更新时,我必须进行页面刷新,然后刷新我的数据。如何在ionic 4中使用navController,请帮助我...

book-list.page.html

<ion-header>
  <ion-toolbar>
    <ion-buttons slot="start">
      <ion-menu-button></ion-menu-button>
    </ion-buttons>
    <ion-title>
      Book List
    </ion-title>
    <ion-buttons slot="end">
      <ion-button routerLink="/user-detail">
        <ion-icon name="add-circle"></ion-icon>
      </ion-button>
    </ion-buttons>
  </ion-toolbar>
</ion-header>

<ion-content padding>
  <ion-card>


    <ion-card-content>
      <ion-card-subtitle>Books:</ion-card-subtitle>

      <ion-list *ngFor="let book of books">
          <ion-item>
            <ion-label text-wrap>
                <ion-text>
                    <p>Title: {{book.title}}</p>
                </ion-text>
                <ion-text>
                    <p>Description: {{book.description}}</p>
                </ion-text>
              </ion-label>
              <ion-button [routerLink]="['/edit-book/',book.id]" (click)="editBook(book.id)">
                <ion-icon name="create" slot="end"></ion-icon>
              </ion-button>
              <ion-button color="danger" (click)="delete(book.id)">
                  <ion-icon name="trash" slot="end"></ion-icon>
              </ion-button>

          </ion-item>
        </ion-list>
    </ion-card-content>
  </ion-card>
</ion-content>

书籍列表。页ts

import { Component, OnInit } from '@angular/core';
import { Book } from '../book';
import { first } from 'rxjs/operators';
import { UserService } from '../user.service';
import { AlertController } from '@ionic/angular';
import { ToastController } from '@ionic/angular';
import { Router } from '@angular/router';
import {  NavController, NavParams } from '@ionic/angular';
@Component({
  selector: 'app-book-list',
  templateUrl: './book-list.page.html',
  styleUrls: ['./book-list.page.scss'],
})
export class BookListPage implements OnInit {
  books: Book[] = [];
  constructor(private router: Router,public navCtrl: NavController,public toastController: ToastController, private userService: UserService, public alertController: AlertController) { }

  ngOnInit() {
    this.getBook();
  }

  getBook() {
    this.userService.getBook().pipe(first()).subscribe(books => {
      this.books = books;


    });
  }

  async delete(id: number) {

    const alert = await this.alertController.create({
      header: 'Confirm!',
      message: 'Are you sure want to delete this book details?',
      buttons: [
        {
          text: 'Cancel',
          role: 'cancel',
          cssClass: 'secondary',
          handler: (blah) => {
            console.log('Confirm Cancel: blah');
          }
        }, {
          text: 'Okay',
          handler: () => {
            this.userService.delete(id).pipe(first()).subscribe(async books => {

              books = books
              const toast = await this.toastController.create({
                message: 'Your Book details have been deleted.',
                duration: 2000

              });
              toast.present();
              this.router.navigate(['book-list']);
            });
          }

        }
      ]
    });

    await alert.present();

  }
  editBook($id) {
    this.userService.setCurrentId($id);

  }

}

这是我的代码plase请帮助我如何在ionic中刷新页面以及如何在此代码中使用NavController请帮助我

共有3个答案

章涵容
2023-03-14

要刷新组件,可以使用ionViewWillEnter方法。

import { ViewWillEnter } from '@ionic/angular';

export class componentName implements ViewWillEnter {

  ionViewWillEnter() {

  }
}
鲜于温书
2023-03-14

我通过将ngOnInit()中的函数调用移动到reload()函数来解决这个问题。这是一个用户定义的函数。我还取消了存储变量的数据,并调用了user defined reload()中的基本功能,因此这也显示了在后台重新加载数据的效果

假设您认为所有的基本功能都在ngOnInit()中,数据存储在变量datavar1、datavar2中,那么您可以执行以下操作

reload(){
   datavar1 = undefined;
   datavar2 = undefined;
   ngOnInit();
}

在上面的代码示例中,ngonit()具有api调用等重要代码,datavar1和datavar2变量具有api调用的响应

咸利
2023-03-14

我通过将ngOnInit()中的函数调用移动到ion ViewWillEnter()来解决这个问题。尝试将book-list-page.ts中的代码更改为:

    ngOnInit() {
    }

    ionViewWillEnter() {
        this.getBook();
    }

我不知道这是正确的还是最好的方法,但对我来说,这个解决方案效果很好。

 类似资料:
  • 我有一个编辑页面,打开时显示: 当事件完成时,使用: 要显示新事件。。。除非页面未刷新以显示它。。。 查看了弹出后激发的页面事件。。。无 已触发一个要订阅的事件,但表示“无法读取未定义的属性‘fireEvent’”(在我使用this.fireEvent();)时表示“this”)因此,页面显然需要完全实例化 之前已经成功地使用了一个可观察的,但这次没有使用。。。。只是一个数组 已经看到可以在何处将

  • 问题内容: 如何使用jQuery刷新页面? 问题答案: 用途: 该函数采用一个可选参数,可以将其设置为强制从服务器而不是从缓存重新加载。该参数默认为,因此默认情况下该页面可能会从浏览器的缓存中重新加载。

  • 试图在用户删除数据时刷新页面。页面上的一些Html元素会自动更新,但主应用程序组件会保留旧数据,直到手动刷新页面。 不再像本例所示那样工作:如何在ionic 4中刷新页面 我尝试改用ngonit(),但没有成功。我也尝试过ChangeDetectorRef,但没有乐趣。 类型脚本 html 数据来自此。内容

  • 在nvue页面如何实现下拉刷新? 尝试用了uni-scroll-view这个组件发现没有效果

  • 问题内容: 发生更改时,如何检测对数据库的最新更新并以静默方式刷新页面? 假设数据库访问如下所示: 任何想法和样品将不胜感激。谢谢。 问题答案: 这就是我最近使用jQuery实现解决方案的方式。 每当发生 重大 更新时,PHP都会在数据库中增加一个字段。 最初加载页面时,使用数据库中的数字填充JavaScript变量:

  • 问题内容: 我有一个文件,其中我在页面顶部显示外部页面(使用iframe),其他部分是写在文件中的html代码的输出。 HTML代码如下所示: 现在,我想以编程方式刷新页面而不刷新。 我的问题是我可以不刷新页面就刷新页面吗? 答案/提示将不胜感激。 问题答案: 该嵌在主HMTL页面(或在JSP)。因此,如果刷新页面,则肯定会再次加载iframe。 为了避免这种情况,我可以考虑以下两种选择: 使用A