2016-01-26 29 views
0

所以我有這個燼對象「陣容」,當我使用灰燼。獲得不返回正確的值

lineup.get('stations').length = 396 

,但它是錯的,如果我檢查該對象,並使用_data

lineup._data.stations.length = 429 

它是正確的,

一覽站從餘燼數據請求的有效載荷的操作得到了這樣

if (payload.stations) { 
    payload.stations = payload.stations.map(function(s) { 
     s.logo = s.logoFilename ? 'http://cdn.tvpassport.com/image/station/100x100/'+s.logoFilename : null; 
     delete s.logoFilename; 
     return Ember.Object.create(s); 
     }); 
} 

有什麼想法?

+0

你可以張貼代碼創建的有效載荷?你也可以嘗試'''lineup.get('stations.length');''' – Keo

+0

是不是lineup._data.length與lineup.get('stations')不同? – Giovanni

+0

有效載荷從服務器端 – 1412

回答

1

Ember.get有時會返回ObjectProxyArrayProxy。有時在燼數據中,您也可以獲得PromiseObjectPromiseArray

如果您在計算屬性中,則可以直接訪問數據,但不要在.get!之後使用普通的JS-dotnotation。總是做obj.get('full.path.to.prop'),從來沒有obj.get('full').get('path').get('to').get('prop')obj.get('full').path.to.prop

如果您不在計算屬性中(例如,您處於操作中),請在PromiseObjectPromiseArray上使用.then


因此對於計算性能:

len: Ember.computed('lineup', { 
    get() { 
    return this.get('lineup.stations.length'); 
    } 
}) 

而對於一個動作:

alertLen() { 
    this.get('lineup.stations').then(stations => alert(stations.get('length')); 
}