2016-05-24 10 views
0

私はemberデータに問題があり、私はいくつかの助けを求めていました。私はfindRecordを使用して単一のレコード( 'location')を返し、そのレコード( 'product')から単一の属性を取得しています。ファイン(電話、名前など)を返す他の属性もありますが、モデル呼び出しを少なくとも2回実行するまで「製品」は返されません。私は自分のネットワークタブをチェックして、それはapiからうまく来ていますが、それはemberデータに読み込まれていないようです(2回発火するまで)。他の誰かがこれを見つけましたか?私は完全に困惑しています。ありがとう!Emberデータがすべてのデータをロードしていません

+0

私は更新されているように、オブジェクトが製品を含むすべての正しいプロパティで返されているように見えますが、record.get( 'product')を実行すると2番目の呼び出しまで未定義を返します。 – Schnaars

+4

コードを掲示してください、私たちはここではウィザードではありません。 –

+0

'product'は' hasMany'や 'belongsTo'のような関係ですか? 'async:false' [belongsTo with async](http://emberjs.com/api/data/classes/DS.Model.html#method_belongsTo)でロードする必要があるかもしれません。 –

答えて

0

それはあなたが以下のように定義されたモデルを持っているように私には見えます:

次にあなたが実行しようとしているコードは、おそらくのようなものである:それがある場合

let name = location.get('name'); // This returns immediately. 
let product = location.get('product'); // This does not work as expected 

その場合、問題は、非同期の関係の間に同期してその場所から製品を取得しようとしていることです。これは、次の2つのオプションを持っていることを意味します

オプション#1:(ポール・オリバーで述べたように)関係の同期を行います

/* location model */ 
export default Model.extend({ 
    phone: attr(), 
    name: attr(), 
    /*...*/ 
    product: belongsTo('product', {async: false}) 
}); 

オプション#2:約束は

を完了するのを待ち
location.get('product').then(function(product) { 
    // Do something with product here 
}); 
関連する問題