我正在尝试将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();
我想这会改变一些事情。
答案 0 :(得分:3)
TodoMVC是一个受限制的例子,它假装是说明性的而不是详尽的,显示了库的所有功能。
Backbone是一种自助式库,采用你想要的东西,而不是更严格的框架作为Angular,所以它“不应该”成为一个问题,但它取决于服务器端的REST api。
我个人会使用Collections
,如果它们似乎是我DSL上聚合对象的自然表示,一般来说我会“永远”使用它。主要优点是利用您将自动从Collections
获取的有关CRUD操作的所有事件。
集合是有序的模型集。您可以绑定“更改”事件,以便在修改集合中的任何模型时收到通知,侦听“添加”和“删除”事件,从服务器获取集合,并使用一整套Underscore.js方法。 / p>
最后,所有暴露都是绝对独立的,你是否添加了React.js
关于您的修改:
看到你的编辑后,我认为这个例子对你的问题领域来说不是一个好的指南。像this这样的东西更“真实”
extend
没有参数也可以删除