我试图像创建一个html页面此骨干景观设计
Publisher (Master) - Use CompositeView Book List (Detail) - User ItemView Video List (Detail) - ????? 1. What to use for this detail ?????
- 我应该得到的所有数据立即请求或分成3要求?
ABC Publisher Book1, Book2, Book3... Video1, Video2, Video3...
我试图像创建一个html页面此骨干景观设计
Publisher (Master) - Use CompositeView Book List (Detail) - User ItemView Video List (Detail) - ????? 1. What to use for this detail ?????
ABC Publisher Book1, Book2, Book3... Video1, Video2, Video3...
你提的问题非常广泛,但让我们澄清一下。
1)矮个子约看法:
出版商 - CompositeView中?如果您要在此视图中呈现PublisherModel或PublisherCollection,这将是正确的方法。如果这个视图只是一个包装的子视图,使用LayoutView。
书籍列表 - 看起来你要在这里渲染集合,所以你应该使用CollectionView或者CompositeView代替ItemView。如果您想渲染单个模型,应该使用ItemView。
2)通用方法对每个集合或模型使用不同的请求。在你的情况下,你应该发送视频请求,另一个请求书籍等。如果您希望在一个请求中获得所有数据,最好创建类似于Controller的内容 - 它将负责解析此请求响应并将解析的数据提供给特定集合。
这对于backbone-relational来说好像是一个很好的用例。在你的服务器端代码中,你定义了你的json来包含嵌套的元素。所以每个出版商都会有一个书单和一个视频列表,它们是在json中返回的。然后骨干关系将自动分析这些并为您创建集合/模型。所以你可以说publisher.get('书籍'),你会得到你的书籍收藏。您还可以从您的图书清单中的书籍中获取参考资料给您的发布商等。我觉得这是一个很好的方式,只需要打一个电话,并从那里处理所有其他部分。
所以,你的出版商模型代码会是这样的(注 - 你的钥匙实际上应该符合您的json):
class Entities.Publisher extends Backbone.RelationalModel
urlRoot: "publishers"
relations: [
{
type: Backbone.HasMany
key: "bookLists"
relatedModel: Entities.BookList
reverseRelation:
key: 'publisher'
includeInJSON: 'id'
},
{
type: Backbone.HasMany
key: "videoLists"
relatedModel: Entities.VideoList
reverseRelation:
key: 'publisher'
includeInJSON: 'id'
}
]