我有JSBin中最简单的Ember应用程序。我试图做的就是找到一个模型。基于其他SO questions,我尝试了以下内容。
App.User.get('store').find('user', 1);
App.User.Store.find('user', 1);
我已定义App.Store
,但App.Store
在控制台中返回undefined
。我显然错过了Ember模型的绝对最基本概念。请解释我5岁,好吗?我只是想返回一个user
对象并在其上调用一个属性。
答案 0 :(得分:12)
商店注入路线/控制器。在路径/控制器内,您可以使用this.store.find('user', 1)
来获取模型。但是没有全球访问商店。
http://jsbin.com/aYIkAcUk/6/edit
如果你因触摸内脏而感到愧疚,请不要继续阅读。
为了透明起见,您可以在全球范围内获得商店。应用程序初始化并准备就绪后,您可以使用ember内部函数使用容器查找方法获取它。 (如果您需要知道应用程序何时就绪,可以使用应用程序ready
挂钩。
var store = App.__container__.lookup('store:main');
var user = store.find('user', 1);
答案 1 :(得分:9)
从Ember Data 2开始,数据存储现在作为服务处理。因此,要在全球范围内查找,声明现在是:
App.__container__.lookup('service:store')
其中App
是您的Ember应用程序的名称。 Kingpin2k的答案不适用于Ember Data 2。