如何加载模型并立即访问它

时间:2013-08-24 06:32:59

标签: ember.js ember-data ember-model

假设当我加载页面时,我包含当前用户信息的json哈希

在注射中我加载信息:

user_data = JSON.parse(user_json)
App.Model.load(user_data['id'], user_data)
container.typeInjection('controller', 'currentUser', 'controller:currentUser')
App.set('currentUserController', controller)

但是我想在这里设置currentUserController的值 - App.Model.load不会返回实际的模型实例!

要得到它,我需要运行App.Model.find(user_data ['id']),因为这是在启动时完成的,似乎ember-model总是最终查询数据库中的这个模型而不是使用json我已经预装了。

因为我在启动应用程序时使用此模型,所以无法推迟加载 - 如何在不需要执行ajax请求的情况下访问已加载的模型?

2 个答案:

答案 0 :(得分:0)

这个答案可能会对您有所帮助:https://stackoverflow.com/a/16254735/437019

至于从json加载,请尝试:

var store = DS.get("defaultStore");
var adapter = store.adapterForType(App.User);
var id = USER_ID_HERE;
adapter.didFindRecord(store, App.User, YOUR_JSON_DATA_HERE, id);
var user = App.User.find(id);

答案 1 :(得分:0)

我正在使用Ember模型,因此对于余烬数据可能会有所不同。

诀窍是使用create(而不是create record!)来创建模型的空版本,然后使用实例的加载调用填充它。 IE

            user = App.User.create()
            user.load(user_data['id'], user_data)

这会将数据加载到您拥有的版本中,并正确调用didLoad以确保它存储在商店中。