【问题标题】:Backbone.js - should I use Model or Collection for the job?Backbone.js - 我应该使用模型还是集合来完成这项工作?
【发布时间】:2018-05-18 10:47:09
【问题描述】:

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

在服务器/数据库端,设计为:用户可以对Category的列表进行CRUD,这就像Backbone.js的Collections。在Category 下,用户可以对Worksheets 进行CRUD。在Worksheet 下,用户可以对Items 进行CRUD。

我应该将Worksheet 用作Collection 还是Model?或者我可以在ModelWorksheet 中拥有CollectionItems 吗?如果是这样,我该怎么做?

此外,除了通常的 CRUD RESTful 操作之外,使用带有 REST 的 Backbone.js 在Collection 中实现Models 的排序/排序的最佳方法是什么?我希望Items 能够让用户在Worksheet 内进行排序。我已经阅读了一些 Backbone.js 教程,它们主要涵盖 CRUD 操作,而不是排序之类的其他内容。

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

【问题讨论】:

标签: rest sorting backbone.js crud


【解决方案1】:

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

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

对集合进行排序:

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

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

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

关于获取集合,this answer may help

【讨论】:

  • 对不起,可能是我没有解释清楚。我的意思是通过 REST 对数据库中的项目进行实际排序,而不仅仅是为了用 JS 显示排序的项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 2018-03-24
  • 1970-01-01
  • 2013-03-01
  • 2016-08-13
  • 2021-02-20
  • 2021-01-02
相关资源
最近更新 更多