这是使用Backbone和React的example。
他定义了Model
:var _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
被应用于Model
而不是Collection
。
这不应该是Collection
中的一个函数,它将获取所有模型并检查complete
属性。
同样,我希望getAll
属于Collection
- 获取所有模型。
此示例似乎将Collection
替换为Model
。
也许我并不完全理解如何使用模型。
答案 0 :(得分:2)
在我看来,这个例子以相当奇怪的方式使用Backbone.Model
。
This是向商店添加新待办事项的地方:
var id = Date.now();
_todos.set(id, {
id: id,
complete: false,
text: text
});
}
它基本上做的是将每个待办事项设置为Model
的属性,使用id作为属性名称。最终_todos.attributes
看起来像下面的
{
"1436600629317": {
"id": 1436600629317,
"complete": false,
"text": "foo"
},
"1436600629706": {
"id": 1436600629706,
"complete": false,
"text": "bar"
}
}
这与_todos.toJSON()
的输出相同。我不知道他们为什么决定这样实现它,如果他们尝试使用Backbone.Sync,他们最终会得到一个不完全是RESTful的服务器API。在不利用Backbone提供的任何功能的情况下使用Backbone似乎很奇怪。有一个对change
事件here的引用,但我没有看到它被用在任何地方。您可以使用任何常规JS对象轻松地重新实现该存储。
示例中实际上使用Backbone的唯一事情是调度程序中的Backbone.Events
。你完全正确地使用Collection会更有意义,因为那时你实际上可以让它与基于REST的服务器API交谈。这个例子似乎只使用Backbone来使用Backbone。