BackboneJS collection.reset()vs collection.fetch()

时间:2012-11-22 20:21:25

标签: javascript backbone.js

我已经阅读并阅读了有关这两种方法的文档,但是对于我的生活无法理解为什么你可以使用其中一种方法?

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

3 个答案:

答案 0 :(得分:30)

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

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

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

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

Here's a Fiddle illustrating the difference.

答案 1 :(得分:4)

我们在这里假设你已经阅读了documentation,否则这里有点混乱。

如果您查看fetchreset的文档,它说的是,假设您已指定url的{​​{1}}属性 - 可能指向一些服务器代码,并且应该返回collection json数组,并且您希望models填充返回的collection,您将使用models }。

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

fetch

成功获取后,您将在集合中创建3个模型。如果您寻找[{ id : 1, name : "a" }, { id : 2, name : "b" }, { id : 3, name : "c" }] here的代码,您会看到提取将获得响应,并在内部根据指定的选项调用collection fetchreset

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

因此,如果你想在重置的帮助下填充相同的json,你可以这样做:

reset

嗯,这不是一个要遵循的做法,因为这种情况var _self = this; $.getJSON("url", function(response) { _self.reset(response); // assuming response returns the same json as above }); 更好,仅用于举例。

另一个重置示例位于documentation页面。

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

答案 2 :(得分:1)

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

@collection.reset(@full_collection.models)

会加载@full_collections模型,但是

@collection.reset()

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