Emberでは関係を適切にロードする方法を考えることができません。ユーザーモデルは、時間の一部を返します。ページをリフレッシュすると、値がnullになる可能性が50/50あるように見えるか、正しく解決されます。Emberが必ずロードされているわけではありません。
私はサーバーオブジェクト(ユーザー関係のbelongsToの終わり)である約束を返していますが、ページをロードする前にユーザーモデルが読み込まれるのを待つようにルートを指示するにはどうすればよいですか?または、最終的にユーザーが読み込まれたときに、ページ上のデータを更新するようEmberに指示するにはどうすればよいですか?
私はafterModelフックでRSVPで遊んでみましたが、運がなかった。これには明らかな解決策が必要ですか?
経路
model(param) {
return this.store.findRecord('server', param.server_id);
},
サーバモデル
export default Model.extend(Validations, {
user: belongsTo('user'),
});
ユーザモデル
export default Model.extend({
displayName: attr('string'),
servers: hasMany('server'),
});
部品
export default Ember.Component.extend({});
コンポーネントテンプレート
<div class="user-panel">
<ul class="user-details">
<li>owner:{{model.user.displayName}}</li>
</ul>
</div>
私は同様の質問ここHow to load belongsTo/hasMany relationships in route with EmberJS
を読んだ。しかし、私は、単一のオブジェクトではなく、私が得る配列を返すよといずれかのソリューションを試すときにArray Methods must be provided an Array
がスローされます
サーバーの応答
{
"data": {
"type": "server",
"id": "578aba694b08ce2310f36798",
"attributes": {
//removed
},
"relationships": {
"jobs": {
"data": [
{
"type": "jobs",
"id": "578aba694b08ce2310f3679a"
}
]
},
"user": {
"data": {
"type": "user",
"id": "57760677d04e0f11f4d3f7e5"
}
}
}
}
}
タイミングが密接に関連したモデルと細心の注意することができます。 APIを管理している場合は、サーバーと一緒にユーザーをサイドロードすることをお勧めします。 – NicholasJohn16