私がしようとしていることは単純だと思われますが、どうやってそれを行うのかよく分かりません。hasManyプロパティに結果が設定されていないときの検出
Emberjs 2.8を使用しています。
私はasync: true
プロパティでは、次のモデルがあります:
models/my-model.js
import DS from 'ember-data';
export default DS.Model.extend({
childModels: DS.hasMany('otherModel', {async: true})
});
は、私はこれらのモデルのいずれかを表示するコンポーネントがあります。
/components/my-component.js
import Ember from 'ember';
export default Ember.Component.extend({
theModel: // model of type my-model here
})
をそれはmy-model.childModels
は、すべてのレコードを持っていない可能性があります。私がしたいのは、テンプレート表示で「子どもが見つかりません」というメッセージが表示された場合ですが、これを行うだけです。の後にの非同期呼び出しが行われ、空の応答が返されます。
templates/components/my-component.hbs
<div>
{{#if theModel.childModels.length == 0}}
// display message saying there are no children
{{else}}
{{#each theModel.childModels as |child}}
// do something
{{/each}}
{{/if}}
</div>
関係はすでにサーバから移入した場合にトリッキーな部分を知っている:だから私は、テンプレートは次のようになりたいと思うだろう。私は.length == 0
をチェックするだけでは、非同期呼び出しが行われる前にそれが当てはまり、DOMが不必要に行き来することを望まないためです。私が必要とするのはtheModel.childModels.isLoaded
のようなものですが、ドキュメントを調べた後、これをどのように達成するのか分かりません。
誰でもこれを行う方法を提案できますか?アドバイスをいただければ幸いです。どうもありがとう!
'theModel.get( 'childModels')'にアクセスすると、どのようなリクエストを投稿できますか?私が知っている範囲では、あなたはすでにparentModelでIDを提供していたので、あなたはすでにいくつの子供がいるか知っているか、動作しません。 – Keo
@Keoリクエストはそれ自身のエンドポイントにあり、 '/ api/the_model/{pk}/children'のようになります - すべてのレスポンスがidsを必要とするわけではなく、リソースを見つける場所へのリンクになるだけです – TheMethod
ああ、それを指摘していただきありがとうございます。 – Keo