我试图像这样创建一个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...
答案 0 :(得分:1)
您的问题非常广泛,但我们要澄清一下。
1)关于观点的简短:
发布商 - CompositeView?如果要在此视图中呈现PublisherModel或PublisherCollection,这将是正确的方法。如果此视图只是子视图的换行,请使用LayoutView。
图书清单 - 看起来您要在这里渲染集合,因此您应该使用CollectionView或CompositeView而不是ItemView。如果您想渲染单个模型,则应使用ItemView。
2)常用方法对每个集合或模型使用单独的请求。在您的情况下,您应该发送视频请求,另一个用于书籍等。如果您希望在一个请求中获取所有数据,最好创建类似Controller的内容 - 它将负责解析此请求响应并将解析后的数据提供给特殊集合。
答案 1 :(得分:0)
这似乎是backbone-relational的一个很好的用例。在服务器端代码中,您可以定义json以包含嵌套元素。因此,每个发布者都会有一个书籍列表和一个在json中返回的视频列表。然后,backbone-relational将自动解析这些并为您创建集合/模型。所以你可以说publisher.get(' books')并且你得到你的书籍收藏。您还可以从图书清单中的图书中获取对您的出版商的参考,等等。我发现这是一个很好的方式,只需拨打一个电话并处理其中的所有其他部分。
因此,您的发布商型号代码将是这样的(注意 - 您的密钥应该与您的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'
}
]