gpt4 book ai didi

javascript - Ember 只设置一个元素而不是多个

转载 作者:行者123 更新时间:2023-11-28 07:55:31 25 4
gpt4 key购买 nike

我有两个异步模型:

App.Posts = DS.Model.extend({
'content': attr('string'),
'comments': DS.hasMany('comments', {async: true}),
});

App.Comments = DS.Model.extend({
'body': DS.attr('string'),
'postId': DS.belongsTo('posts', {async: true})
});

通过 PostController,我尝试通过操作加载 Comments onClick:

App.PostController = Ember.ArrayController.extend({
loadComments: function(post_id) {
this.store.find('comments', post_id);
}
});

(也许有更好的方法来做到这一点?)

请求和 API 响应是正确的(请参阅下面的 API 响应),但只呈现一条注释,然后 Ember 抛出错误:

TypeError: Cannot read property 'postId' of undefined

在 Embers 控制台 > 数据选项卡中,评论模型中有一条评论,但评论模型中还有一个 post 元素,其评论属性设置为未定义。这可以解释为什么 Ember 无法读取属性 postId,因为它不是评论。为什么 Ember 将帖子推送到评论模型中,并且只推送 1 个而不是 3 个评论到模型中?

API 响应

{
"comments": [
{
"id": 2,
"postId": 31152,
"body": "Lorem ipsum dolor sit amet, consetetur",
},
{
"id": 2,
"postId": 31152,
"body": "asdasd",
},
{
"id": 2,
"postId": 31152,
"body": "asd asd sd",
}
]
}

最佳答案

这是在黑暗中拍摄的一个小镜头,我通常会把它作为评论,但它有点大。您可以尝试将所有模型引用更改为单数吗?这是 Ember 数据模型的正确模式。

App.Post = DS.Model.extend({
'content': attr('string'),
'comments': DS.hasMany('comment', {async: true}),
});

App.Comment = DS.Model.extend({
'body': DS.attr('string'),
'postId': DS.belongsTo('post', {async: true})
});

this.store.find('comment', post_id);

既然我写了这篇文章,我可能会看到另一个问题。如果您通过 post_id 查询评论(假设它是 7),那么 Ember Data 期望返回单个记录,而不是记录集合。因此,它可能会查看评论集合并认为它是单个记录,而这只会破坏其逻辑。

关于javascript - Ember 只设置一个元素而不是多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26140710/

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