gpt4 book ai didi

javascript - Backbone 关系到 JSON 不呈现所有属性

转载 作者:行者123 更新时间:2023-12-04 01:39:12 26 4
gpt4 key购买 nike

我读过 thisthis问题已经,但它没有帮助。我这样调用 fetchRelated:

  initialize: function(){
Artist.fetchRelated(
'albums',
{success: this.render}
);
},

render: function(){
this.model.get('albums').each(function(album){
console.log(album);
console.log(album.toJSON());
console.log(album.get('title'));
});
$(this.el).html(this.template({
current_user: App.current_user.toJSON(),
artist: this.model.toJSON(),
albums: this.model.get('albums'),
}));

return this;
},

第一个 console.log(album) 返回一个有效的专辑模型及其所有属性,但下一次使用 toJSON 函数调用 log 时却没有。它只是返回 id。因此,当我尝试在下一个日志中检索专辑的标题时,它返回未定义。

此外,它告诉我不能在模板调用中向艺术家调用 toJSON(),因为它是未定义的,尽管我只是用它来获取专辑...

我确定我的问题是回调 hell ,我仍然不习惯,但我不知道如何解决它。

编辑 1:

console.log(album) 响应对于集合中的每张专辑都是这样的:

_changing: false
_events: Object
_isInitialized: true
_pending: false
_permitsUsed: 0
_previousAttributes: Object
_queue: Backbone.BlockingQueue
_relations: Array[2]
attributes: Object
artist: child
description: "asdasd"
id: 1
image: ""
release_year: 1950
resource_uri: "/albums/1"
songs: child
title: "asdasd"
changed: Object
cid: "c8"
collection: child
id: 1
__proto__: Surrogate

编辑 2:

我已经尝试更改 backbone-relational 提供的 toJSON 函数,但我不明白为什么这样做应该可以解决我的问题,因为我有其他模型并且此函数无需任何覆盖即可正常工作。

我尝试从我自己的 toJSON 函数返回 _.clone(this.attributes),因为 console.log(this.attributes) 给出了正确的响应,但是对于某些原因它返回相同。

artist: Object
id: 1
songs: Array[0]
__proto__: Object

这是我的关系的样子。

  relations: [{
type: Backbone.HasMany,
key: 'songs',
relatedModel: SongModel,
collectionType: Songs,
reverseRelation:{
key: 'album'
}
}],

最佳答案

我遇到了同样的问题,我发现您可以使用

访问属性
render: function(){                                                                   
this.model.get('albums').each(function(album){
album.fetch({
success: function(fetchedAlbum) {
console.log(fetchedAlbum.toJSON());
}
});
});
});

这将使用获取的关系打印获取的相册...

我不认为这是一个解决方案,因为使用主干关系的主要目的是避免这种麻烦。

如果我找到解决方案,我会更新这个:D真正的解决方案

关于javascript - Backbone 关系到 JSON 不呈现所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487524/

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