Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从服务器获取嵌套路由ember 2.3.0的数据_Javascript_Templates_Ember.js - Fatal编程技术网

Javascript 如何从服务器获取嵌套路由ember 2.3.0的数据

Javascript 如何从服务器获取嵌套路由ember 2.3.0的数据,javascript,templates,ember.js,Javascript,Templates,Ember.js,我有一个帖子模型和一个评论模型,如下所示: // app/models/post.js import DS from 'ember-data'; export default DS.Model.extend({ //.... comments: DS.hasMany('comment'), //.... }) // app/models/comment.js import DS from 'ember-data' export default DS.Model.extend({

我有一个帖子模型和一个评论模型,如下所示:

//  app/models/post.js

import DS from 'ember-data';

export default DS.Model.extend({
 //....
 comments: DS.hasMany('comment'),
 //....
})

// app/models/comment.js

import DS from 'ember-data'

export default DS.Model.extend({
 //....
 ad: DS.belongsTo('post'),,
 //....
})
app/router.js中

Router.map(function() {
  this.route('post', {path: '/post/:post_id'}, function() {
    this.route('comments');
  });
)};
我在
app/templates/post.hbs
中有一个
post
模板,看起来像这样:

<h2>{{model.title}}</h2>
<p>{{model.body}}</p>

  {{#link-to "post.comments"}}
    <h2>Comments</h2>
  {{/link-to}}
  {{outlet}}
我希望当有人点击帖子模板上的评论链接时,评论模板会呈现在帖子模板的
{{outlet}
上。我遇到的问题是获取
注释
模型的数据。我在
app/routes/post/comments.js
中有一个
注释的路径,它看起来像这样:

import Ember from 'ember';

export default Ember.Route.extend({
  model(){
    //I don't know what to do here.
  }
});
// app/routes/post/comments.js
import Ember from 'ember';

export default Ember.Route.extend({
  model(){
      const post = this.modelFor('post');
      this.store.adapterFor('comment').set('namespace', `posts/${post.id}`);
      return this.store.query('comment', post.id);
    }
 }); 

我的后端服务器中的注释显示在
/posts/:post\u id/comments
端点上。如何获取评论模板上的评论?

由于您已经在父级
路径:Post
中加载了
Post
,因此您的
路径:Post。评论
只需从中请求
评论即可:

// app/routes/post/comments.js
import Ember from 'ember';

export default Ember.Route.extend({
  model(){
    const post = this.modelFor('post');
    return post.get('comments');
  }
});

我终于成功了。在James answer的帮助下,我唯一要做的就是为
CommentAdapter
设置一个动态名称空间。 我使用余烬生成器生成了一个
comment
适配器,并将我的
app/routes/post/comments.js
文件更改为如下所示:

import Ember from 'ember';

export default Ember.Route.extend({
  model(){
    //I don't know what to do here.
  }
});
// app/routes/post/comments.js
import Ember from 'ember';

export default Ember.Route.extend({
  model(){
      const post = this.modelFor('post');
      this.store.adapterFor('comment').set('namespace', `posts/${post.id}`);
      return this.store.query('comment', post.id);
    }
 }); 

这与预期的一样。

当我执行此操作时,会出现一个错误:
gethttp://localhost:4200/comments/6 404(未找到)
GEThttp://localhost:4200/comments/2 404(未找到)
处理路由时出错:post.comments适配器操作失败错误:适配器操作失败
是否可能是post注释的API返回部分数据,而在呈现的模板中,您依赖的字段在初始获取时没有返回?