【问题标题】:Ember.js - How to not reload the model on the route loadingEmber.js - 如何在路由加载时不重新加载模型
【发布时间】:2016-04-18 17:29:17
【问题描述】:

我正在开发一个应用程序,其中有大量项目,由 ember-data 从服务器加载。此列表可以按不同字段过滤,例如日期。

当你第一次加载这个路由时,它会按日期过滤:它只加载当前年份的项目。但是,用户可以更改这些过滤器。

当您转换到另一条路线并返回时,可见过滤器与您离开时相同,ember 似乎会记住它们。但是,由于模型是在控制器存在且过滤器可用之前由路由加载的,因此它会加载所有当年的模型。

因此,结果是用户看到了所有当年项目的列表,以及一组可能不匹配的过滤器。

如果模型已经可用,我希望路由不重新加载模型,以节省时间和网络;但任何解决方案都将不胜感激。

【问题讨论】:

  • 你能分享你的模型钩子吗?您可以在模型钩子上分享的越多,帮助就越容易:)

标签: ember.js ember-data


【解决方案1】:
  1. 如果控制器已经存在,您可以将 GET 移动到不会在路由更改时重新生成的控制器,您之前的所有模型和过滤器仍然存在

  2. 在 beforeModel:... 或 model:... 方法中从控制器获取最后选择的过滤器选项,以通过查询加载数据(如果可能)

  3. 如果您确定所有数据都已加载,请使用 peekRecords 避免新的网络请求

【讨论】:

  • 我尝试从路由中移除“model”钩子并从控制器“init”中加载它,但结果并不令人满意。不是让模型重新访问,而是由一些空项目代替。 init 好像只是第一次调用,很可惜,因为它可以解决所有问题。我还不明白为什么。我会尝试在测试服务器上设置一个测试帐户来显示。
猜你喜欢
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
相关资源
最近更新 更多