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

Ionic/Angular/Firestore:无需页面刷新的字段刷新策略

松英喆
2023-03-14

TL;DR使用AngularFirestore和离子/角度。我希望在用户设备(例如表单上的复选框)之间同步数据,而不会导致所有用户的整页刷新。

我是爱奥尼亚/Angular应用程序的快乐用户,该应用程序用于促进我管理的咖啡店的工作。我在应用程序中有一个现有的清单功能。

该应用程序是使用FireStore作为后端实现的,我使用的是AngularFirestore API。

我在咖啡馆里有几款运行该应用程序的平板电脑,当人们完成任务时,他们可以检查它们。到目前为止,一切顺利。

现在,工作人员要求我同步检查表,以便如果有人在一台平板电脑上标记一个项目为完整,所有平板电脑都会得到更新。显而易见的解决方案是简单地使用双向绑定和AngularFirestore API。当一个用户选中一个复选框时,平板电脑始终处于同步状态,因为该应用程序已订阅valueChanges()

但是有一个问题。当一个用户更新FiRecovery时,所有其他用户都会经历页面刷新。在他们的工作流程中,他们必须重新滚动到他们工作的清单中的任何位置,然后他们的一位同事更新了FireStore数据库。这是一个错误。

我怀疑我遗漏了一个基本的AngularFirestore或Ionic/Angular概念。我想在不刷新整个页面的情况下更新页面上的字段。

以下是一个典型的实施:

module.ts

this.notesCollection = this.afs.collection('notes', (ref) =>
  ref.orderBy('deleted').orderBy('notes').where('deleted', '!=', 'true')
);

this.notesInfo = this.notesCollection.snapshotChanges();

this.notesInfo.subscribe((notes) => {
  this.notesElements = notes.map((note) => ({
    id: note.payload.doc.id,
    ...note.payload.doc.data(),
    expanded: false,
  }));
});

html

  <ion-list>
    <div *ngFor="let note of notesElements">
      <div *ngIf="!note.deleted">
        <ion-item>
      <ion-grid>
        <ion-row width="100%">
          <ion-col size="11">{{note.notes}}</ion-col>
          <ion-col size="1">
            <ion-buttons>
              <ion-button
                slot="end"
                (click)="expandItem($event, false, note)"
                ><div>Edit</div>
              </ion-button>
            </ion-buttons>
          </ion-col>
        </ion-row>

...

共有1个答案

贺立果
2023-03-14

我用Formaray解决了这个问题。以下是我所做的:

>

  • 定义firestore集合,订阅snapShotChanges()服务。

    在ngOnInit中,将内容写入FormArray。

    每次启动服务时,我都会检查哪个元素发生了更改,然后我只使用更新了FormArray的必需元素。patchValue({标记:值})

  •  类似资料:
    • 问题内容: 我有一个网站需要更新状态。就像飞行一样,您要离开,巡航或着陆。我希望能够刷新状态而无需让观众拥有并重新加载整个页面。我知道有一种使用AJAX和jQuery的方法,但是我对它的工作原理没有任何了解。我也不希望他们单击​​按钮。如果有人知道该怎么做,我将不胜感激! 问题答案: 通常,如果您不知道某些事情是如何工作的,请寻找可以学习的示例。 对于此问题,请考虑 您可以看到使用jQuery很容

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

    • 我想在成功删除数据后刷新页面。当我删除或更新时,我必须进行页面刷新,然后刷新我的数据。如何在ionic 4中使用navController,请帮助我... book-list.page.html 书籍列表。页ts 这是我的代码plase请帮助我如何在ionic中刷新页面以及如何在此代码中使用NavController请帮助我

    • 问题内容: 我有一个Angular SPA,它根据一些餐厅数据的不同部分提供了各种推荐列表和位置的Google Map(请参阅m.amsterdamfoodie.nl)。我希望每个列表都有自己的URL。为了让Google抓取不同的列表,我将标签用于offcanvas导航。 目前,标签会导致视图刷新,这在地图上非常明显。 我可以防止使用和(请参见下面的代码段),但是随后我需要实现一种更新浏览器URL

    • 主要内容:实例在加载新数据的时候,我们需要实现下拉刷新效果,代码如下: 实例 HTML 代码 JavaScript 代码 item.json 文件数据: 尝试一下 » 效果如下所示:

    • 在加载新数据的时候,我们需要实现下拉刷新效果,代码如下: 实例 HTML 代码 <body ng-app="starter" ng-controller="actionsheetCtl" > <ion-pane> <ion-content > <ion-refresher pulling-text="下拉刷新" on-refresh="doRefr