Backbone + React 应用程序中的模型混淆
Confusion about Models in Backbone + React application
这是一个 example,它使用 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();
}
});
我不明白的是为什么 areAllComplete
被应用于 Model
而不是 Collection
.
这不应该是 Collection
中的一个函数,它将获取其所有模型并检查 complete
属性。
同样,我希望 getAll
属于 Collection
- 获取其所有模型。
此示例似乎将 Collection
替换为 Model
。
可能我不太明白模型是怎么用的
在我看来,该示例以一种相当奇怪的方式使用了 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.
这是一个 example,它使用 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();
}
});
我不明白的是为什么 areAllComplete
被应用于 Model
而不是 Collection
.
这不应该是 Collection
中的一个函数,它将获取其所有模型并检查 complete
属性。
同样,我希望 getAll
属于 Collection
- 获取其所有模型。
此示例似乎将 Collection
替换为 Model
。
可能我不太明白模型是怎么用的
在我看来,该示例以一种相当奇怪的方式使用了 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.