2013-04-28 28 views
0

希望,一個簡單的問題,必須有一個簡單的答案,但我已經浪費了近3小時擺脫這個問題。EmberJS,加載頁面加載第一個對象

我有一個用戶模型。我想從數據庫加載第一個用戶並在首頁加載時顯示它。

什麼,我試圖使用方法是:

在我ArrayController,

init: function(){ 
    var user = App.User.find(1) 
    console.log(user); 
    this.set('defualtUser',user.get('name')) 
} 

,但我不能得到的用戶名。

這裏是控制檯中的用戶輸出,它表示數據正在加載,但我不能只是讓它使用。

Class 
    __ember1367188634172: "ember270" 
    __ember1367188634172_meta: Meta 
    _changesToSync: Object 
    _data: Object 
    attributes: Object 
    ***name: "Cafe Alpino"*** 
    __proto__: Object 
    belongsTo: Object 
    hasMany: Object 
    id: null 
    __proto__: Object 

查看名稱:「Cafe Alpino」,我只是想顯示這個名字。

任何幫助?

BTW,我與EmberJS

回答

2

一個新手,我覺得這裏的問題是asynchronousy。該行:var user = App.User.find(1)將導致尚未加載的user記錄;它的屬性在AJAX調用在後臺返回之前不會被設置。因此,user.get('name')將爲空。

可能有幾種方法可以解決這個問題。我沒有用灰燼數據太多(因爲它不是此刻非常穩固),但根據the docmentation,應該有一個didLoad事件,您可以使用:

init: function() { 
    var user = App.User.find(1); 
    var _this = this; 
    user.on('didLoad', function() { 
     _this.set('defaultUser', user.get('name')); 
    }); 
} 

試試看吧!讓我知道如果它不工作。

+0

謝謝你,爲之工作。我想知道,在發佈這個問題之前,我確實嘗試了這個東西。 但我犯了一個錯誤。 this.set( 'defaultUser',test.get( '存儲')得到( '名')); – 2013-04-29 07:32:42

+0

假設我不想在App.User.find(1)中將user_id硬編碼爲1。我如何傳遞到覺得是動態的,因此,如果與任何類型的ID 1 0R ID 3或ID 55是傳入查找的用戶,它不會失敗的ID。有什麼建議麼。謝謝。 – brg 2013-04-30 17:14:03

+0

@brg你應該看看emberjs.com上的指南。 http://emberjs.com/guides/routing/defining-your-routes/#toc_dynamic-segments – Christoffer 2013-05-01 22:00:28