2013-08-24 15 views
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請求?

回答

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); 
+0

謝謝 - 鏈接回答了一個非常不同的問題,但。 – gone

0

我使用灰燼模型所以這可能是燼數據不同。

訣竅是使用create(而不是create record!)來創建模型的空白版本,然後用實例的加載調用填充它。 IE

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

這會將數據加載到您擁有的版本中,並正確調用didLoad以確保它在商店中。

相關問題