Коллекция Backbone.js - это просто простая заказанная модель набора. Адаптируясь к моделям и коллекциям, мы можем избежать логики обработки данных в нашем уровне. Кроме того, модели и коллекции предоставляют удобные способы работы с бэкэнд, а когда изменения данных могут быть автоматически помечены. Таким образом, его можно использовать в следующих случаях:
Кода -копия выглядит следующим образом:
Модель: животное, коллекция: зоопарк
Обычно ваш набор подходит только для одной модели, но сама модель не ограничивается типом набора.
Кода -копия выглядит следующим образом:
Модель: человек, коллекция: офис
Модель: человек, коллекция: дом
Вот примеры общих моделей/наборов:
Кода -копия выглядит следующим образом:
var music = backbone.model.extend ({
инициализировать: function () {
console.log («Добро пожаловать в мир музыки»);
}
});
var Album = backbone.collection.extend ({
Модель: музыка
});
Приведенный выше код рассказывает нам, как создать коллекцию. Но это не говорит нам процесс манипулирования набором с помощью данных. Итак, давайте рассмотрим этот процесс:
Кода -копия выглядит следующим образом:
var music = backbone.model.extend ({
по умолчанию: {
Имя: «Не указано»,
Художник: «Не указан»
},
инициализировать: function () {
console.log («Добро пожаловать в мир музыки»); }
});
var Album = backbone.collection.extend ({
Модель: музыка
});
var music1 = новая музыка ({id: 1, name: «Как Bizarre», Artist: "Omc"});
var music 2 = новая музыка ({id: 2, name: «Что больно больше всего», Artist: «Rascal Flatts»});
var myalbum = новый альбом ([Music 1, Music 2]);
console.log (myalbum.models);
Давайте посмотрим на отношения между коллекцией Backbone.js и другими компонентами:
1. Добавьте модель в коллекцию
Как мы знаем, набор - это коллекция моделей. Поэтому мы можем добавить модели в коллекцию. Чтобы добавить модель в коллекцию, мы можем использовать метод добавления. Мы также можем добавить модель в начало коллекции - с помощью непрерывного метода.
Кода -копия выглядит следующим образом:
var music3 = новая музыка ({id: 3, имя: «Да, я делаю», артист: «Rascal Flatts»});
Music.add (Music3);
console.log ('новая песня добавлена');
console.log (json.stringify (music));
2. Снимите модель из набора
Много раз у нас есть необходимость удалить некоторые указанные данные из сбора. Чтобы удалить модель из коллекции, мы должны предоставить идентификатор модели. Если мы хотим заменить оригинальную коллекцию полным новым набором данных, мы можем использовать метод сброса.
Кода -копия выглядит следующим образом:
Music.remove (1);
console.log («Как странно удалено ...»);
console.log (json.stringify (music));
3. Получить и установить
Если нам нужно получить значение из коллекции в другом месте в коде, мы можем напрямую использовать метод GET. На этом этапе мы передаем значение идентификатора модели с поиском.
Кода -копия выглядит следующим образом:
console.log (json.stringify (music.get (2)));
Существует интересная реализация набора метода набора. Метод SET выполняет «интеллектуальные» обновления коллекции, передавая список моделей. Если модель в списке нет в коллекции, ее добавляется в коллекцию. Если модель уже находится в коллекции, ее свойства объединены. Если коллекция содержит любую модель, которая не принадлежит списку, модель удаляется.
Кода -копия выглядит следующим образом:
var music = backbone.model.extend ({
// этот атрибут должен быть установлен в качестве по умолчанию
по умолчанию: {
Имя: ''
},
// Установить атрибут ID, чтобы коллекция
Idattribute: 'id'
});
var song = backbone.collection.extend ({
Модель: музыка
});
var models = [{
Имя: 'OMC',
ID: 1
}, {
Название: 'Flatts',
ID: 2
}];
VAR Collection = новая песня (модели);
collection.bind ('add', function (model) {
Alert ('addb')
});
collection.bind ('remove', function () {
оповещение ('добавить')
});
модели = [{
Имя: 'OMC',
ID: 1
}, {
Название: 'Flatts',
ID: 2
}, {
Имя: «Джексон»,
ID: 3
}];
collection.add (модели);
});
Как мы видели выше, у нас уже было 2 модели заранее, и когда мы добавили 3 -ю модель, более ранняя модель осталась прежней.
IV Конструктор и инициализация
Когда мы создаем коллекцию, мы можем передать инициализированный массив модели. Кораптор комплекта может быть добавлен в качестве опции. Если проданный вариант компаратора неверно, сортировка предотвращается. Если мы определим функцию инициализации, эта функция будет вызвана при создании коллекции. Ниже приведены несколько вариантов, если они предоставлены, будут добавлены непосредственно в набор: модель и компаратор.
Кода -копия выглядит следующим образом:
var tabs = new Tabset ([tab1, tab2, tab3]);
var spaces = new Backbone.collection ([], {
Модель: пространство
});
5. Тойсон
Метод TOJSO возвращает массив в коллекции, содержащий каждую модель хэш -атрибут. Этот метод обычно используется для сериализации и сохранения всего набора.
Кода -копия выглядит следующим образом:
var song = new Backbone.collection ([[[
{name: "flatts"},
{name: "omc"},
{имя: "Джексон"}
]);
Alert (json.stringify (song));
6. компаратор
По умолчанию в коллекциях нет компараторов. Если мы определим компаратор, его можно использовать, чтобы сохранить набор каким -либо образом. Это означает, что при добавлении модели модель вставляется в соответствующее место в сборе. Коватор может быть определен в сортировке или указывает сортированные свойства в строке.
Функция компаратора Sortby получает модель и возвращает число или строку.
Функция компаратора Sort получает две модели. Если первая модель опережает вторую модель, то возвращает -1; Если две модели имеют одинаковый уровень, то возвращает 0; Если вторая модель впереди первой модели, то возвращает 1.
Давайте посмотрим на пример ниже:
Кода -копия выглядит следующим образом:
var Student = Backbone.Model;
var студенты = новая backbone.collection;
Студенты.comparator = 'name';
Студенты.
Студенты.
Студенты.
Alert (Student.Pluck ('roll'));
Набор, который будет сравниваться, не автоматически переупорядочен, даже если мы изменем свойства модели. Поэтому мы должны сортировать сортировку, когда оценка повлияет на сортировку после изменения атрибутов модели.
7. Сорт
При добавлении моделей в коллекцию коллекция должна быть вынуждена быть переупорядоченной. Чтобы отключить сортировку при добавлении модели сбора, вы можете передать параметр {sort: false}. Вызов отсортированный триггер проверяет этот параметр.
Кода -копия выглядит следующим образом:
sortbytype: function (type) {
this.sortkey = type;
this.sort ();
}
И просмотреть функции:
Кода -копия выглядит следующим образом:
sortthingsbycolumn: function (event) {
var type = event.currenttarget.classlist [0]
this.collections.things.sortbytype (тип)
this.render ()
}
8. Выбор
PLUCK: Выберите один атрибут из каждой модели в коллекции, что эквивалентно вызову карты из итератора и возврата одного атрибута.
Кода -копия выглядит следующим образом:
var song = new Backbone.collection ([[[
{name: "flatts"},
{name: "omc"},
{имя: "Джексон"}
]);
var names = songs.pluck ("name");
Alert (json.stringify (names));
9. Где
Где: возвращает массив моделей в коллекции, которые соответствуют пропущенным свойствам, используя фильтры.
Кода -копия выглядит следующим образом:
var song = new Backbone.collection ([[[
{name: «Да, я делаю», художник: «Flatts»},
{name: «Как странно», художник: «Как странно»},
{name: «Что больно больше всего», Artist: «Flatts»},
]);
var Artists = song.where ({Artist: "Flatts"});
Блюдо (Artists.length);
10. URL
Установка свойств URL в коллекции будет относиться к местоположению сервера. Модели в коллекции будут использовать этот URL для построения собственного URL.
Кода -копия выглядит следующим образом:
var songs = backbone.collection.extend ({
URL: '/песни'
});
var songs = backbone.collection.extend ({
url: function () {
вернуть this.document.url () + '/songs';
}
});
11. Анализ
Parse: Вызовов Backbone при получении, независимо от того, возвращает ли сервер модель коллекции. Эта функция проходит исходный объект ответа, который должен вернуть массив свойств модели, добавленных в коллекцию. Реализация по умолчанию не является операцией. Простой проход через ответ JSON, перезаписывайте это ранее существовавшим API или лучшим ответом пространства имен.
Кода -копия выглядит следующим образом:
var songs = backbone.collection.extend ({
Parse: function (ответ) {
return response.results;
}
});
12. Извлечение
Fetch: Извлеките набор модели по умолчанию коллекции с сервера и установите их в коллекции после поиска. Эта опция Hash принимает вызов успеха или ошибки, которые проходят три параметра (установка, ответ, опция). Затем верните данные модели с сервера. Он используется для настройки объединенной извлеченной модели.
Кода -копия выглядит следующим образом:
Backbone.sync = function (метод, модель) {
Alert (Method + ":" + model.url);
};
var songs = new Backbone.collection;
songs.url = '/songs';
songs.fetch ();
Как вы можете видеть выше, есть так много способов овладеть их для улучшения качества вашего кода.