Подтвердить что ты не робот

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

Я прочитал и прочитал документы по этим двум методам, но для меня жизнь не может понять, почему вы можете использовать один над другим?

Может ли кто-то просто дать мне базовую ситуацию с кодом, в которой кто-то будет приложением, а другой - нет.

4b9b3361

Ответ 1

reset устанавливает коллекцию с массивом моделей, которые вы указываете:

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

fetch извлекает данные коллекции с сервера, используя URL-адрес, указанный вами для коллекции.

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

Здесь сценарий, иллюстрирующий разницу.

Ответ 2

Мы предполагаем, что вы прочитали документацию , иначе это будет немного запутанно.

Если вы посмотрите документацию fetch и reset, то, что он говорит, предположим, что вы указали свойство url для collection - которое может указывать на некоторый код сервера и должно возвращать массив json models, и вы хотите collection, который будет заполнен возвратом models, вы будете использовать fetch.

Например, у вас есть следующий json, возвращаемый с сервера на URL-адрес коллекции:

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

Что создаст 3 модели в вашей коллекции после успешной выборки. Если вы охотитесь за кодом collection fetch здесь, вы увидите, что выборка получит ответ и внутренне вызовет либо reset, либо add на основе указанных опций.

Итак, возвращаясь к обсуждению, reset предполагает, что у нас уже есть json of models, который мы хотим сохранить в коллекции, мы передадим его как параметр для него. В вашей жизни, если вы хотите обновить коллекцию, и у вас уже есть модели на стороне клиента, тогда вам не нужно использовать fetch, reset выполнит вашу работу.

Следовательно, если вы хотите, чтобы тот же json был заполнен в коллекции с помощью reset, вы можете сделать что-то вроде этого:

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

Ну, это не практика, которой следует следовать, поскольку этот сценарий fetch лучше, его просто использовали, например.

Другой пример reset находится на странице .

Надеюсь, это даст немного идеи и сделает вашу жизнь лучше:)

Ответ 3

reset() используется для замены коллекции новым массивом. Например:

@collection.reset(@full_collection.models)

будет загружать модели @full_collections, однако

@collection.reset()

возвращает пустую коллекцию. И функция fetch() возвращает коллекцию по умолчанию модели