Javascript 主干网中的模型混淆+;反应应用

Javascript 主干网中的模型混淆+;反应应用,javascript,backbone.js,reactjs,reactjs-flux,Javascript,Backbone.js,Reactjs,Reactjs Flux,这是一个使用主干和React的 他定义了一个Model:var\u todos=new Backbone.Model() 然后向其添加两个函数: var TodoStore = _.extend(_todos, { areAllComplete: function() { return _.every(_todos.keys(), function(id){ return _todos.get(id).complete; }); }, getAll: fu

这是一个使用主干和React的

他定义了一个
Model
var\u todos=new Backbone.Model()

然后向其添加两个函数:

var TodoStore = _.extend(_todos, {
  areAllComplete: function() {
    return _.every(_todos.keys(), function(id){
      return _todos.get(id).complete;
    });
  },
  getAll: function() {
    return _todos.toJSON();
  }
});
我不明白的是为什么
areAllComplete
应用于
模型
而不是
集合

这不应该是
集合
中的一个函数,它将获取其所有模型并检查
complete
属性

类似地,我希望
getAll
属于
集合
——获取其所有模型

此示例似乎将
集合
替换为
模型


也许我不完全理解模型是如何使用的。

在我看来,这个例子使用的是
主干网.Model

是向商店添加新待办事项的地方:

var id = Date.now();
  _todos.set(id, {
    id: id,
    complete: false,
    text: text
  });
}
它基本上是将每个todo项设置为
模型的属性,使用id作为属性名。它以如下所示的
\u todos.attributes
结束

{
  "1436600629317": {
    "id": 1436600629317,
    "complete": false,
    "text": "foo"
  },
  "1436600629706": {
    "id": 1436600629706,
    "complete": false,
    "text": "bar"
  }
}
这与您从
\u todos.toJSON()
获得的输出相同。我不知道他们为什么决定这样实现它,如果他们尝试使用Backbone.Sync,他们最终会得到一个不完全是RESTful的服务器API。使用主干网而不利用主干网提供的任何东西似乎很奇怪。有一个对
change
事件的引用,但我看不到它在任何地方被使用。您可以使用任何常规JS对象轻松地重新实现该存储


该示例实际使用的来自主干网的惟一内容是dispatcher中的
Backbone.Events
。您完全正确地认为使用集合更有意义,因为这样您就可以让它与基于REST的服务器API进行通信。该示例似乎只是为了使用主干而使用主干。

我不明白为什么要混合使用主干和流量。Re:model v collection,这取决于您在服务器上存储它们的方式。在这里,模型实际上是一个TODO列表,每个TODO项都作为该模型上的一个属性进行了键控。整个事情在我看来都很愚蠢。@Mathletics有什么理由我不应该把这两者结合起来使用吗?React只是MVC中的V,对吗?我想使用主干网进行路由和存储。我一直在考虑这件事,我的反应是。这就是你的意思吗?或者说,我为什么要使用具有主干的通量体系结构?我是认真的;我不明白把助焊剂和主干混在一起。主干网已经处理数据存储和事件。(尽管我承认我不太精通变化。)