Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ember Data: Get a Model in the Console

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.

like image 502
nickcoxdotme Avatar asked Nov 18 '13 16:11

nickcoxdotme


2 Answers

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

like image 161
Kingpin2k Avatar answered Nov 18 '22 04:11

Kingpin2k


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.

like image 28
Max Wallace Avatar answered Nov 18 '22 05:11

Max Wallace