gpt4 book ai didi

model - Ember 模型:一对多固定装置,服务器调用

转载 作者:行者123 更新时间:2023-12-02 06:00:31 26 4
gpt4 key购买 nike

在Ember页面上查看the guide,我不知道如何在一对多关系中关联模型。

App.Post = DS.Model.extend({
comments: DS.hasMany('comment')
});

App.Comment = DS.Model.extend({
post: DS.belongsTo('post')
});

1.如何定义灯具? A或B或其他

A)在每个帖子“对象”中的注释
App.Post.FIXTURES = [
{
id:1,
title:"hello world",
body:"hey ho",
comments:[
{
text: "Very nice"
},
{
text: "Very nice indeed"
},
]
},
{
id:2,
title:"hello again",
body:"I'm Bob",
comments:[{
text: "Pretty cool actually"
}]
}
]

B)分别发表评论并与ID链接到帖子
App.Post.FIXTURES = [
{
id:1,
title:"hello world",
body:"hey ho"
},
{
id:2,
title:"hello again",
body:"I'm Bob"
}
]

App.Comment.FIXTURES = [
{
post_id:1,
text: "Very nice"
},
{
post_id:1,
text: "Very nice indeed"
},
{
post_id:2,
text: "Pretty cool actually"
}
]

2.关于从服务器获取

A)我是否需要分别加载帖子和评论,或者一次调用全部加载,使其结构类似于1A情况?

B)如果我想单独放置它们,例如,等待用户单击“确定的评论”链接,除非用户要求,否则无需为页面上的每个博客帖子下载1000条评论。

您能否提供每个电话的外观的简单版本?

最佳答案

1.如何定义灯具?还有别的

正确的形式是将ids作为comments属性嵌入到post上。

App.Post.FIXTURES = [
{
id:1,
title:"hello world",
body:"hey ho",
comments : [1,2]
},
{
id:2,
title:"hello again",
body:"I'm Bob",
comments : [3]
}
]

App.Comment.FIXTURES = [
{
id : 1,
text: "Very nice"
},
{
id : 2,
text: "Very nice indeed"
},
{
id : 3,
text: "Pretty cool actually"
}
]

2.从服务器获取

有几种方法可以解决此问题。

使用“侧面加载”。您仍然提供注释ID列表作为 comments属性,但是您还将注释列表包括在JSON响应中。
{posts:[

{
id:1,
title:"hello world",
body:"hey ho",
comments : [1,2]
},
{
id:2,
title:"hello again",
body:"I'm Bob",
comments : [3]
}
],
comments : [
{
id : 1,
text: "Very nice"
},
{
id : 2,
text: "Very nice indeed"
},
{
id : 3,
text: "Pretty cool actually"
}
]}

在您的 async上使用 hasMany,允许Ember在帖子已加载后查找评论。
App.Post = DS.Model.extend({
comments: DS.hasMany('comment',{async:true})
});

如果您有成千上万的记录,上面的解决方案将不会很好。而不是一次加载所有注释(通过侧面加载或 async),您将希望使用分页一次仅加载一些注释。在这种情况下,您的 PostRoutePostController可能看起来像这样。
App.PostController = Ember.ObjetController.extend({
needs : ['comments']
});

App.PostRoute = Ember.Route.extend({
setupController : function(controller,model){
this._super(controller,model);
comments = this.store.find('comment',{post_id : model.get('id'), page : 1});
this.controllerFor('comments').set('content',comments);
}
});

关于model - Ember 模型:一对多固定装置,服务器调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18938746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com