Javascript 主干网中的模型混淆+;反应应用
这是一个使用主干和React的 他定义了一个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
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,对吗?我想使用主干网进行路由和存储。我一直在考虑这件事,我的反应是。这就是你的意思吗?或者说,我为什么要使用具有主干的通量体系结构?我是认真的;我不明白把助焊剂和主干混在一起。主干网已经处理数据存储和事件。(尽管我承认我不太精通变化。)