おそらく私はEmberが怠惰なロードをどのようにしているのか誤解しているかもしれませんが、hasMany
の関係の側面を指定しますが、可能な場合、もの。Emberをレイジー(非同期)にロードする方法hasMany
私はRESTAdapter
を使用していますが、他のいくつかのオブジェクトと1対多の関係を持つ親オブジェクトがあります。親を見ると、子アウトレットとして表示したい子オブジェクトのリンクがあります。
例としては、次のようになります。
// brand.js
export default Model.extend({
name: attr('string'),
description: attr('string'),
dateCreated: attr('date'),
lastUpdated: attr('date'),
regions: hasMany('region', {async: true})
});
// region.js
export default Model.extend({
name: attr('string'),
dateCreated: attr('date'),
lastUpdated: attr('date'),
brand: belongsTo()
});
私は/api/brands/1
にアクセスすると、私は、次のJSONを返しています:
{
"brand": {
"id": 1,
"dateCreated": 1466456255539,
"lastUpdated": 1466456255936,
"name": "Some Brand",
"description": "Voluptates odio nemo corrupti",
}
}
私は私のルートはそうのように定義されていますので、
this.route('brand', {path: '/brands/:brand_id'}, function() {
this.route('regions');
});
、brand
詳細画面では、私は{{outlet}}
を持っていますregions
のリンクをクリックすると、そのブランドの地域を取得する必要があり、URLは/api/brands/1/regions
になります。私は一つの大きな結果内のすべてのデータを返す場合
すべてが動作し、私のregions
ルータは、次のようになります。
export default Ember.Route.extend({
model() {
return this.modelFor('brand').get('regions');
}
});
しかし、私は地域を遅延から正しくフェッチされることをそう何をするか分からない私API。それとも可能であれば。私はside loading
を読んでいますが、現在のところ、私のAPIは子供のためだけにIDを返しません。
一方向にリンクするには、クエリのパラメータを追加することです: '{{#link-to" brand.regions "(query-params brand = model)}}' ' '。 [query-paramsのためのドキュメント](https://guides.emberjs.com/v2.5.0/routing/query-params/) – Jeff
テンプレート内のどこでも 'regions'プロパティを使用すると、Emberはその関係のレコードを自動的にロードします。実際に地域を表示しているテンプレートを教えてください。 – GJK
@GJK - 明日は仕事中ですが、それは少し意味があります。私は '{{brand.regions}} 'を経由してそれらを入手しているとは言えません。もし私がそうした方法でアクセスすれば、別の方法でクエリを実行します。私はそれのようなものを試して、報告して戻ってきます。 – Gregg