0

假设当我加载页面时,我包含当前用户信息的 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 请求的情况下访问加载的模型?

4

2 回答 2

0

我正在使用 Ember-model,所以这对于 ember-data 可能有所不同。

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

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

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

于 2013-08-24T18:32:11.057 回答
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);
于 2013-08-24T06:40:26.203 回答