Ember-Data - Find() 不缓存来自 Rails API 调用的结果

Ember-Data - Find() not caching results from Rails API call

我是 Ember 的新手,在获取 Ember/Ember 数据以缓存对 Rails 后端的 API 调用结果时遇到了问题。

我找到了这个主题:Ember-Data .find() vs .all() - how to control cache?

它回答了一些关于 find() 与 all() 的作用的问题,使用它我找到了一个看起来很丑陋的解决方法,我想知道是否有比这更好、更简洁的方法:

import Ember from 'ember';

export default Ember.Route.extend({
  model: function () {
    if (this.store.all('facility').get('content.length')) {
      return this.store.all('facility');
    } else {
      return this.store.find('facility');
    }
  }
});

一些注意事项:

  1. 您不应该在模型挂钩中缓存数据。使用 #link-to 或类似的 API.

  2. 传递缓存数据
  3. 如果您没有通知系统来告知 Ember 资源已更改,则根本不应该缓存数据。请记住,您的应用可能 运行 很长一段时间。

  4. 您也可以同时进行。

这是一个使用缓存数据并在后台更新它们的示例。 (未测试)

import Ember from 'ember';

export default Ember.Route.extend({
  model: function () {
    var currentData = this.store.all('facility');
    this.store.find('facility'); // Ember automatically picks new changes

    return currentData;
  }
});