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

时间:2015-01-19 21:03:03

标签: ember.js ember-data

我是Ember的新手,并且无法让Ember / Ember Data将API调用的结果缓存到Rails后端。

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

哪个回答了一些关于find()vs 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 个答案:

答案 0 :(得分:0)

几点说明:

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

  2. 如果您没有通知系统告诉Ember资源已被更改,您根本不应该缓存数据。请注意,您的应用可能会运行很长时间。

  3. 您也可以同时进行这两项工作。

  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;
      }
    });