2014-10-03 50 views
0

我试图像创建一个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... 
    

    回答

    1

    你提的问题非常广泛,但让我们澄清一下。

    1)矮个子约看法:

    出版商 - CompositeView中?如果您要在此视图中呈现PublisherModel或PublisherCollection,这将是正确的方法。如果这个视图只是一个包装的子视图,使用LayoutView。

    书籍列表 - 看起来你要在这里渲染集合,所以你应该使用CollectionView或者CompositeView代替ItemView。如果您想渲染单个模型,应该使用ItemView。

    2)通用方法对每个集合或模型使用不同的请求。在你的情况下,你应该发送视频请求,另一个请求书籍等。如果您希望在一个请求中获得所有数据,最好创建类似于Controller的内容 - 它将负责解析此请求响应并将解析的数据提供给特定集合。

    0

    这对于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' 
         } 
        ]