gpt4 book ai didi

javascript - 关于 Backbone + React 应用程序中模型的混淆

转载 作者:数据小太阳 更新时间:2023-10-29 05:33:05 26 4
gpt4 key购买 nike

这是一个 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 - 获取它的所有模型。

这个例子似乎用 Model 替换了 Collection

可能我不太明白模型是怎么用的。

最佳答案

在我看来,该示例以一种相当奇怪的方式使用了 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。

关于javascript - 关于 Backbone + React 应用程序中模型的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com