2016-05-25 19 views
0

私は一対一の関係で2つのモデルを持っています。私は、関係の一方向だけが必要です。EmberJS - リレーションがあまりプッシュされていません

App.A = DS.Model.extend({ 
    b: DS.belongsTo('b', { async: true }), 
}); 

App.B = DS.Model.extend({ 
    name: DS.attr('string'), 
}); 

モデルAはサーバーからロードされています。 モデルBはstore.pushPayloadを使用して手動でプッシュされます。

モデルAがモデルAの前にロードされていれば、すべてが問題なく、{{a.b.name}}がテンプレート内で正しく機能します。しかし、モデルAがモデルBの前にロードされると、名前は空になります(実際にはリレーション全体が実際には設定されません)。

モデルAにモデルBがロードされたことをどのように伝えることができますか?

答えて

2

モデルAの関係が存在しない場合、Emberは自動的にBモデルを要求します。どちらのエバー/エバーデータを使用していますか? RESTまたはJSONAPIアダプタを使用していますか?モデルAのための

お使いのサーバーの応答は、モデルBにはサーバインタフェースはありませんJSON APIレスポンス内のモデルB.

すなわちのための関係についてのデータがこの

"data": { 
"type": "A", 
"id": "1", 
"attributes": { 
    "some-attribute": "JSON API paints my bikeshed!" 
}, 
"relationships": { 
    "b": { 
    "data": { 
     "id": "123", 
     "type": "b" 
    }, 
    } 
} 
+0

のようになります持っている必要がありますデータはアプリの別のjavascript部分からストアにプッシュされます。 EmberJS 2.5.0とデータ2.5.1を使用しています。 – Charles

+0

次に、関係を手動で設定する必要があります。だから、この 'aset( 'b'、bObject)'のようなものは、bObjectをストアにプッシュした後です。 – Igor

+0

私は、クラスの権利ではなくオブジェクトにプッシュしますか?だから 'a.set( 'b'、bObject)'。私は店にプッシュすると、奇妙な継ぎ目、Emberは関係を処理する必要があります。 – Charles

関連する問題