假设当我加载页面时,我包含当前用户信息的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请求的情况下访问已加载的模型?
答案 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以确保它存储在商店中。