【问题标题】:Ember Substates with Ember data after store already has data商店已有数据后,Ember 子状态与 Ember 数据
【发布时间】:2018-11-21 12:38:04
【问题描述】:

我已经阅读了与 Substates 等相关的 Ember 文档,并且我了解它是如何工作的。在我当前的应用程序中,我的 loading.hbs 和其他子 loading.hbs 模板工作正常。

我只想讨论一个用例。

  1. 在我的路线 A 中,在我的模型函数中,我为我的模型执行 fetchAll。
  2. 我去 Route A,第一次发送 api 请求,我看到我的加载屏幕。
  3. 现在我导航到其他路线 B。
  4. 现在我回到第一个路由 A,再次发送 api 请求但是这个 未显示时间加载屏幕。

我想在这里发展我的理解。现在没有显示第二次加载屏幕,它告诉我们 store 有数据,因此没有意义将其加载和 fetch store 发送请求以与后端同步。

问题

现在我想知道这是否是 Ember 与 Ember-data 的默认行为?

要显示此加载屏幕,我需要手动执行一些操作吗?

理想情况下,我想要的是,如果在第二个请求中获取数据然后显示它,同时显示加载器告诉用户它也在与后端同步。

我知道一切都可以手动完成,我不想重新发明轮子或以非常规的方式做事。所以我想知道 Ember 提供的最佳优化解决方案,经验丰富的 Ember 开发人员可以帮助我理解。

提前致谢。

【问题讨论】:

  • 通过 ember twiddle 或 js fiddle 分享你的实现

标签: ember.js ember-data


【解决方案1】:

现在我想知道这是否是 Ember 的默认行为 Ember 数据?

是的,这是当您执行 findRecordfindAll 时 Ember 数据的默认行为,其中适配器的 shouldBackgroundReloadRecordshouldBackgroundReloadAll 事件分别默认为 true。您可以通过返回 false 并确保将 shouldReloadAllshouldReloadRecord 分别设置为 true 来关闭此功能,以确保请求始终命中 API 而不会从缓存中获取。

理想情况下,总是建议立即在屏幕上显示数据,因为它具有更好的用户体验,让用户感觉数据已经存在并且正在获取数据的某些部分。 Check here

要显示这个加载屏幕,我需要手动执行一些操作吗?

You may also want to read this

【讨论】:

    【解决方案2】:

    为了在我自己的研究之后添加更多详细信息,我在 Ember 文档中找到了有用且相关的详细信息。这都是关于缓存的。

    如果记录已经存在,那么承诺将立即得到解决,这就是为什么我看不到已加载记录的加载屏幕,同时 Ember-Data 也与后端同步并重新渲染模板。

    Ember Model Docs

    缓存 商店会自动为您缓存记录。如果一条记录已经被加载,再次请求它总是会返回相同的对象实例。这样可以最大限度地减少往返服务器的次数,并允许您的应用程序尽快将其 UI 呈现给用户。

    例如,当您的应用程序第一次向商店请求 ID 为 1 的人员记录时,它会从您的服务器获取该信息。

    但是,当您的应用下次请求 ID 为 1 的人时,商店会注意到它已经从服务器检索并缓存了该信息。它不会为相同的信息发送另一个请求,而是为您的应用程序提供它第一次提供的相同记录。此功能(无论您查找多少次,始终返回相同的记录对象)有时称为身份映射。

    使用身份映射很重要,因为它可以确保您在 UI 的某一部分所做的更改会传播到 UI 的其他部分。这也意味着您不必手动保持记录同步——您可以通过 ID 请求记录,而不必担心应用程序的其他部分是否已经请求并加载了它。

    返回缓存记录的一个缺点是您可能会发现数据的状态自首次加载到商店的身份映射后发生了变化。为了防止这种陈旧的数据长期存在问题,Ember Data 会在每次从存储中返回缓存记录时自动在后台发出请求。当新数据进来时,记录会被更新,如果在初始渲染后记录发生了变化,则模板会使用新信息重新渲染。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多