Ember.js 余烬数据、控制器属性和数据缓存

Ember.js 余烬数据、控制器属性和数据缓存,ember.js,ember-data,Ember.js,Ember Data,我正在使用余烬和余烬数据与我的RESTful API对话。我获取数据的方法之一是通过属性方法,如下所示: Em.Controller.extend({ categories: function () { return this.store.find('category'); }.property() }); 现在,当我在模板中使用categories时,它会正确地获取类别并显示这些类别。当我看到为多个控制器运行相同的查询时,我的问题就出现了 假设我在另一个控制器中有这些类别

我正在使用余烬和余烬数据与我的RESTful API对话。我获取数据的方法之一是通过属性方法,如下所示:

Em.Controller.extend({  
  categories: function () {
    return this.store.find('category');
  }.property()
});
现在,当我在模板中使用
categories
时,它会正确地获取类别并显示这些类别。当我看到为多个控制器运行相同的查询时,我的问题就出现了

假设我在另一个控制器中有这些类别,我看到这些类别再次被提取,就好像存储没有缓存数据一样

我所期望的是缓存将缓存数据,因此无需执行另一个API请求

我还体验到,即使在获取所有类别之后,也会请求单个类别,例如,在我有一个具有类别关系的模型的情况下:

var entity = DS.Model.extend({
  category: belongsTo('category')
});
加载此实体时,Ember Data会针对属于此实体实例的特定类别向API发出另一个请求


我是否错过了启用缓存的功能?

find
发出API调用。考虑使用<代码>所有< /代码>来获取当前缓存的记录。@ Trasaaburo然后如何进行初始抓取?这实际上取决于应用程序的结构。您可能希望引用一个控制器,该控制器负责读入并保存来自其他控制器的数据,执行类似于
needs:['categories'],categoriesBinding:'controllers.categories.model'
或类似的操作。@torazaburo这是个好主意。那对我合适。但是,由于Ember.js是一个相当新的版本,如果用户没有通过CategoriesController,我不知道如何处理这个解决方案。然后Ember.js抱怨它找不到控制器,或者你可以通过调用应用程序路径中的find来启动你的商店。