16

我已经阅读并阅读了关于这两种方法的文档,但是对于我的一生来说,为什么你可能会使用另一种方法?

有人可以给我一个基本的代码情况,一个是应用程序,另一个不是。

4

3 回答 3

33

reset使用您指定的模型数组设置集合:

collection.reset( [ { name: "model1" }, { name: "model2" } ] );

fetch使用您为集合指定的 URL 从服务器检索集合数据。

collection.fetch( { url: someUrl, success: function(collection) {
    // collection has values from someUrl
} } );

这是一个说明差异的小提琴。

于 2012-11-23T05:51:55.777 回答
4

我们假设您已经阅读了文档,否则这里会有些混乱。

如果您查看fetchreset的文档,它说的是,假设您指定了- 的url属性,该属性collection可能指向某些服务器代码,并且应该返回一个json数组models,并且您希望collection填充models存在返回,您将使用fetch.

例如,您在集合 url 上从服务器返回以下 json:

[{
  id : 1, 
  name : "a"
 }, {
  id : 2, 
  name : "b"
 }, {
  id : 3, 
  name : "c"
 }]

成功获取后,它将在您的集合中创建 3 个模型。如果您寻找collection fetch 此处的代码,您将看到 fetch 将获得响应,并且在内部将调用resetadd基于指定的选项。

所以,回到讨论,reset假设我们已经有了json of models,我们想要存储在集合中,我们将把它作为参数传递给它。在你的生活中,如果你想更新集合并且你已经在客户端拥有模型,那么你不需要使用fetchreset会做你的工作。

因此,如果您想借助 reset 将相同的 json 填充到集合中,您可以执行以下操作:

var _self = this;
$.getJSON("url", function(response) { 
  _self.reset(response); // assuming response returns the same json as above
});

好吧,这不是要遵循的做法,因为这种情况fetch更好,它只是用于示例。

另一个重置示例在文档页面上。

希望它能给你一点想法,让你的生活更美好:)

于 2012-11-23T05:48:24.760 回答
1

reset() 用于用新数组替换集合。例如:

@collection.reset(@full_collection.models)

但是会加载@full_collections 模型

@collection.reset()

将返回空集合。并且 fetch() 函数返回模型的默认集合

于 2012-11-22T20:50:19.120 回答