Backbone.js - 我应该使用模型还是集合来完成这项工作?

Backbone.js - should I use Model or Collection for the job?

我对 Backbone.js 的了解有限,并且在将 ModelCollections 的概念应用到项目中时遇到了一些麻烦。

在server/database方面,它的设计是:用户可以对Category的列表进行增删改查,就像Backbone.js的Collection一样。在 Category 下,用户可以 CRUD Worksheets。在 Worksheet 下,用户可以 CRUD Items。

我应该 Worksheet 作为 Collection 还是 Model?或者我可以在 WorksheetModel 中包含 ItemsCollection 吗?如果可以,我该怎么做?

此外,除了通常的 CRUD RESTful 操作之外,使用 [=47= 在 Collection 中实现 Model 的 ordering/sorting 的最佳方法是什么? ] 与休息?我希望 Item 能够让用户在 Worksheet 中进行排序。我已经阅读了一些 Backbone.js 教程,它们主要涵盖了 CRUD 操作,而不是诸如排序之类的其他内容。

可能是我遗漏了一些东西,但我只是不明白Collection的意义,Collection下有一个fetch方法,但我可以获取所有Models 在一个特定的 Collection 下使用集合 ID?教程不包括这样的内容....

请记住,使用 model/collection classes 的目的是利用它们的方法,而不是创建一个简单的数组。 因此,以事件处理为例,您可以在单个模型上收听事件,或者您可以收听整个模型集合。然后根据需要更新服务器。

如果您有多个工作表,那么工作表也可以是一个新集合。这意味着每个工作表都是一个 backbone 模型。

正在对集合进行排序:

  1. 查看文档中的收集方法,尤其是underscore methods

  2. 您可以通过扩展 Backbone 集合 class,然后创建一个新实例来向集合添加排序方法。示例:

    var SortableCollection = Backbone.Collection.extend({
        sortThis: function() {
            // return 'this' sorted
        }
    });
    var collection = new SortableCollection();
    SortableCollection.sortThis();
    

关于获取集合,this answer may help