我尝试使用Ember数据构建Rails + Ember应用程序。
型号:
export default DS.Model.extend({
name: DS.attr('string'),
content: DS.attr('string'),
image_before: DS.attr('string'),
created_at: DS.attr('date'),
updated_at: DS.attr('date'),
status: DS.attr('number'),
comments: DS.hasMany('comment', {async: true}),
user: DS.belongsTo('user'),
});
并像这样获取json(使用active_model_serializers生成json)
{"work":{
"id":3,
"user_id":1,
"content":"My first photo",
"image_before": "image_before/original/AnViWyuup5I.png",
"created_at":"2015-08-11T16:57:24.153Z",
"updated_at":"2015-11-13T11:39:44.076Z",
"status":1,
"comment_ids":[13]
},
"comments": [{
"id": 13,
"text": "good!",
"created_at": "2015-09-28T10:34:16.461Z",
"user_id": 2
}]
}
模板是:
<div class="work__img-wrapper">
<img class="work__img" src="{{model.image_before}}">
</div>
<div class="work__content">{{model.content}}</div>
<div class="work__comments-list">
<strong>Comments( {{model.comments.length}} ):</strong>
{{#each model.comments as |comment|}}
<div class="work__comment">
<div class="work__comment-text">{{comment.text}}</div>
</div>
{{/each}}
</div>
在页面上,我获得了有关工作和评论(0)的所有信息,但Chrome的Ember Inspector显示了评论。
我如何打印评论?
答案 0 :(得分:0)
您的模型定义应为:
comments: DS.hasMany('comment', {async: false}),
因为相关数据正在加载响应,而不是异步获取。
如果这是Ember 2.0应用程序,则默认的异步设置为true
。来自Ember博客(http://emberjs.com/blog/2015/06/18/ember-data-1-13-released.html,强调我的):
在Ember Data 2.0中,默认情况下,关系将是异步的。同步 仍然会支持关系,但您需要手动完成 通过在您的人际关系中设置 {async:false} 来选择加入他们。烬 如果您有任何数据,数据1.13将记录您的弃用警告 未明确设置async属性的关系。 此外,您可以使用ember-watson来帮助识别您的案例 您没有明确异步的关系的代码库 属性。
答案 1 :(得分:0)
问题解决了。默认情况下,DS.hasMany关联的ID不会添加到序列化的对象(http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html)。
应该添加
CStr("google / cpc,bing / cpc").Split(",")