在没有集合

时间:2015-07-09 15:25:51

标签: rest backbone.js reactjs reactjs-flux

我正在尝试将REST添加到react +骨干示例中。

执行此操作的tutorial需要Backbone.Collection,但我找到的示例(TodoMVC)似乎根本不使用Collections,这与我的预期相反tutorial使用Backbone和React。

以后会出现这个问题吗?

其次,如果没有明确引用Collection,我将如何使应用程序更加安静。我必须用一个重写吗?

修改

我最终使用了Collection,但我无法重新组织部分代码。

我引用的原始example有点像这样:

var TodoStore = _.extend(_todos, {
    getAll: function() {
        return _todos.toJSON();
    }
    ...
 }

现在,我的TodoStore变为TodoStore = new TodoCollection();

那么我在哪里放置这些功能?
我尝试将它们放入TodoCollection(可能相当天真),但新的条目不再存储在商店中。

这些功能属于哪里?

编辑2:

研究前面的例子让我很困惑。

看起来他们的TodoStore(我想成为Collection)是一个模特。

当他们创建一个项目时,他们会将它添加到该模型中,这对我来说没有多大意义。他们不应该创建模型的实例并将其添加到Collection,还是我误解了什么?

叹息 编辑3:

注意到他们的Model实际上是一个实例。

我认为var _todos = Backbone.Model.extend();实际上是:
... = new Backbone.Model.extend();

我想这会改变一些事情。

1 个答案:

答案 0 :(得分:3)

TodoMVC是一个受限制的例子,它假装是说明性的而不是详尽的,显示了库的所有功能。

Backbone是一种自助式库,采用你想要的东西,而不是更严格的框架作为Angular,所以它“不应该”成为一个问题,但它取决于服务器端的REST api。

我个人会使用Collections,如果它们似乎是我DSL上聚合对象的自然表示,一般来说我会“永远”使用它。主要优点是利用您将自动从Collections获取的有关CRUD操作的所有事件。

  

集合是有序的模型集。您可以绑定“更改”事件,以便在修改集合中的任何模型时收到通知,侦听“添加”和“删除”事件,从服务器获取集合,并使用一整套Underscore.js方法。 / p>

最后,所有暴露都是绝对独立的,你是否添加了React.js

关于您的修改:

看到你的编辑后,我认为这个例子对你的问题领域来说不是一个好的指南。像this这样的东西更“真实”

  1. 我尝试将它们放入TodoCollection 右侧
  2. 收藏品
  3. 是的,这不自然,他们试图保持示例简单,如果有一个服务器端,它应该是一个集合
  4. 是的,它变化很大。看看Douglas Crockford article我认为extend没有参数也可以删除