7

I have the simplest possible Ember app in this JSBin. All I'm trying to do is find a model. Based on other SO questions, I've tried the following.

App.User.get('store').find('user', 1);
App.User.Store.find('user', 1);

I've defined App.Store, but App.Store returns undefined in the console. I'm obviously missing the absolute most basic concepts of Ember models. Explain like I'm 5, please? I literally just want to return a user object and call a property on it.

Community
  • 1
  • 1
nickcoxdotme
  • 6,567
  • 9
  • 46
  • 72

2 Answers2

12

The store is injected to routes/controllers. Inside a route/controller you can use this.store.find('user', 1) to fetch a model. But there is no global access to the store.

http://jsbin.com/aYIkAcUk/6/edit

If you feel guilty about touching the innards, which you should a bit, do not read on.

For transparency sake, you can get the store globally. After the application has initialized and is ready you can use the innards of ember to fetch it using the container lookup method. (If you need to know when the app is ready you can use the application ready hook.

 var store = App.__container__.lookup('store:main');
 var user = store.find('user', 1);

http://jsbin.com/aYIkAcUk/7/edit

Kingpin2k
  • 47,277
  • 10
  • 78
  • 96
  • I know Ember Data is changing all the time, and this tutorial is a few months old, but [here](http://matthewlehner.net/ember-js-routing-and-views/)'s where I saw an example of just getting a user in the console. Does Ember Data not support this anymore? – nickcoxdotme Nov 18 '13 at 18:00
  • 4
    That's pretty out of date. https://github.com/emberjs/data/blob/master/TRANSITION.md – Kingpin2k Nov 18 '13 at 18:08
9

As of Ember Data 2, the data store is now handled as a service. Thus, to look it up globally, the statement is now:

App.__container__.lookup('service:store')

Where App is the name of your Ember application. Kingpin2k's answer will not work with Ember Data 2.

Max Wallace
  • 3,609
  • 31
  • 42