2011-11-28 50 views
1

我在我的web控制檯測試一些代碼(使用coffescript)無法訪問屬性後取

@user = new Onethingaday.Models.User() 
@user.url= "https://stackoverflow.com/users/#{current_user.get('nickname')}.json?id_type=nickname" 
@user.fetch() 
console.log(@user) 
console.log(@user.get("facebook_id")) 

console.log(@user)行顯示如下: enter image description here

然而,console.log(@user.get("facebook_id"))顯示undefined

我看到user具有facebook_id屬性。我如何檢索它的價值?

+0

'User'是一個Backbone.js模型,對吧? –

+0

是的,這是正確的 – Zhen

回答

3

這看起來像一個時機的問題,雖然是奇一。 fetch是異步的;您需要等到它的success回調被調用才嘗試訪問任何屬性。

試試這個:

@user.fetch success: => 
    console.log(@user) 
    console.log(@user.get("facebook_id")) 

這是令人困惑的是,第一console.log將顯示user.attributes.facebook_id現有和第二不會,但console.log本身就是WebKit的執行異步的,所以這是怎麼回事的是,@user.get呼叫立即解決(同步),而第一個console.log中的對象檢查稍後解決 - 在fetch完成後。

0

它看起來像facebook_id是@user對象的attributes屬性的屬性。如果是這樣的話,我覺得有以下將工作:

@user.attributes.facebook_id 
+0

這正是Backbone.js中'get'的功能...... –