テンプレートをネストしたいので、ネストされたルート設定があります。ネバーされたEmberルートのURLに直接アクセスするとデータが表示されない
...
this.route('posts', function() {
this.route('post', {path: ':post_id'}, function() {
this.route('comments', {path: 'comments'}, function() {
this.route('comment', {path: ':comment_id'});
});
});
});
...
潜在的に、私のURLは次のようなものになります:私は{{link-to}}
を経由して移動すると、私は特定に直接行けば /posts/:post_id/comments/:comment_id
を、私は、しかし、問題がないルートの設定は次のようになりますブラウザを介したURLは、それが間違っているときです。私のコメントページに、私が見ている投稿(post_id)に関連するコメントがリストアップされているとします。問題は直接入力するのと同じように、/posts/123/comments/56
はコメントのリストを読み込まず、コメントだけをロードします。
// routes/posts.js
...
model() {
return this.get('store').findAll('post');
}
...
// routes/posts/post.js
...
model(params) {
return this.get('store').findRecord('post', params.post_id);
}
...
// routes/posts/post/comments.js
...
model(params) {
let post=this.modelFor('posts/post');
return post.get('comments');
}
...
// routes/posts/post/comments/comment.js
...
model(params) {
return this.store.findRecord('comment', params.comment_id);
}
...
私は/posts/123/comments/56
で入力する場合、リストはcomments.jsテンプレートから表示されません。ここに私のルートが設定されている方法です。
/posts/123/comments
と入力すると、comments.jsから最初のコメントのみが表示されます。
私はそれがmodelForとは何か関係があるように感じていますが、間違っていることはわかりません。リンク先を経由してナビゲートするのではなく、投稿URLのコメントに直接行くと、投稿のコメントリストを適切に作成/水和するにはどうすればよいですか?
UPDATE 1:ここでは モデルは以下のとおりです。
// post.js
export default DS.Model.extend({
title: DS.attr("string"),
articles: DS.hasMany('comment', {async: true})
});
// comment.js
export default DS.Model.extend({
title: DS.attr("string")
});
私は蜃気楼にそれを接続しました。ここで
はコメント器具のサンプルです:
[
{
id: 1,
title: "Apple"
},
...
とポストフィクスチャ:
[
{
id: 1,
title: "A post with fruits for comments",
commentIds: [1, 2]
},
...
はUPDATE 2:
私はtemplates/posts/post/comments.js
のための私のテンプレートコードを追加しました
Comments.js!
{{outlet}}
<ol>
{{#each model as |comment|}}
<li>{{#link-to "posts.post.comments.comment" comment}} {{comment.title}}{{/link-to}}</li>
{{/each}}
</ol>
私も上記のcomment.jsルートを更新し、複雑さを軽減しました。
あなたのモデルがどのように見えるか、それらのモデルを返すJSONを表示できます – kiwiupover
私はいくつかの情報で投稿を更新しました。データはそこにあり、URLなしで動作します。ネストされたルートは、直接アクセスしようとすると分解されます。 – Jason
'これです。modelFor( 'posts/post') 'それはポストモデルを返すのでしょうか、あなたのために働いていますか?私はそれが 'this.modelFor( 'posts.post')'だろうと思った。とにかくあなたが働いているなら私を修正してください。 – kumkanillam