pus*_*kin 6 javascript backbone.js reactjs reactjs-flux
这是一个使用Backbone和React 的例子.
他定义了一个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();
}
});
Run Code Online (Sandbox Code Playgroud)
我不明白为什么areAllComplete被应用于a Model而不是a Collection.
这不应该是一个Collection能够获得所有模型并检查该complete属性的函数.
同样,我希望getAll属于Collection- 获得所有模型.
这个例子似乎取代Collection有Model.
也许我不完全了解模型的使用方式.
在我看来,这个例子的使用Backbone.Model方式相当奇怪。
这是向商店添加新待办事项的地方:
var id = Date.now();
_todos.set(id, {
id: id,
complete: false,
text: text
});
}
Run Code Online (Sandbox Code Playgroud)
它基本上所做的是将每个待办事项设置为 的属性Model,使用 id 作为属性名称。它最终_todos.attributes看起来像下面这样
{
"1436600629317": {
"id": 1436600629317,
"complete": false,
"text": "foo"
},
"1436600629706": {
"id": 1436600629706,
"complete": false,
"text": "bar"
}
}
Run Code Online (Sandbox Code Playgroud)
这与您从 得到的输出相同_todos.toJSON()。我不知道他们为什么决定这样实现,如果他们尝试使用 Backbone.Sync,他们最终会得到一个不完全是 RESTful 的服务器 API。在不利用 Backbone 提供的任何功能的情况下使用 Backbone 似乎很奇怪。这里有对该change事件的引用,但我没有看到它在任何地方被使用。您可以使用任何常规 JS 对象轻松地重新实现该存储。
该示例似乎实际上从 Backbone 使用的唯一东西是Backbone.Events在调度程序中。您完全正确,使用 Collection 会更有意义,因为这样您实际上可以让它与基于 REST 的服务器 API 进行对话。该示例似乎只是为了使用 Backbone 而使用 Backbone。
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |