Collection
Расширяет ICollection, collection.Item.
Базовая реализация коллекции объектов на карте.
Конструктор
Collection([options])
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: Object Опции коллекции. |
Пример:
// Пример реализации собственного меню на основе наследования от Collection.
var bind = ymaps.util.bind,
map = new ymaps.Map(
'map', {
center: [55.819543, 37.611619],
zoom: 6
}
),
// Создаем собственный класс дочернего элемента меню.
MenuItem = function (data, options) {
MenuItem.superclass.constructor.call(this, options);
// Создаем менеджер данных.
// Если первым аргументом передали строчку, то обрачиваем её в хеш.
this._data = new ymaps.data.Manager((typeof data == 'string') ? { content: data } : data);
this._$content = null;
};
// Наследуем MenuItem от collection.Item.
ymaps.util.augment(MenuItem, ymaps.collection.Item, {
onAddToMap: function (map) {
MenuItem.superclass.onAddToMap.call(this, map);
var parentDomContainer = this.getParent().getChildElement(this);
this._$content = $('<div class="menuItem"></div>').appendTo(parentDomContainer);
// Создаем слушателя изменения поля 'content' в _data.
this._dataMonitor = new ymaps.Monitor(this._data);
this._dataMonitor.add('content', this._applyContent, this);
this._applyContent(this._data.get('content', ''));
// Пример использования менеджера событий domEvent.manager.
this._eventsGroup = ymaps.domEvent.manager.group(this._$content[0]);
this._eventsGroup.add('click', function () {
this.events.fire('click');
}, this);
},
onRemoveFromMap: function () {
this._$content.remove();
this._dataMonitor.removeAll();
this._eventsGroup.removeAll();
MenuItem.superclass.onRemoveFromMap.call(this);
},
getData: function () {
return this._data;
},
_applyContent: function (newValue) {
this._$content.text(newValue);
}
});
// Создаем собственный класс меню.
var Menu = function (options) {
Menu.superclass.constructor.call(this, options);
this._$content = null;
};
// Наследуем Menu от Collection.
ymaps.util.augment(Menu, ymaps.Collection, {
onAddToMap: function (map) {
Menu.superclass.onAddToMap.call(this, map);
var parentDomContainer = this.getParent().getChildElement(this);
this._$content = $('<div class="menu"></div>').appendTo(parentDomContainer);
},
onRemoveFromMap: function () {
this._$content.remove();
Menu.superclass.onRemoveFromMap.call(this);
},
getChildElement: function (chilElement) {
return this._$content;
}
});
// Пример использования пользовательского элемента управления "Меню".
var menu = new Menu(),
menuItem1 = new MenuItem('Пункт 1'),
menuItem2 = new MenuItem({content: 'Второй пункт'}),
menuItem3 = new MenuItem('Третий пункт');
menu.add(menuItem1);
menu.add(menuItem2);
menu.add(menuItem3);
map.controls.add(menu, {top: 5, left: 5});
// Изменяем данные в первом пункте меню.
menuItem1.getData().set('content', 'Первый пункт');
// Удаляем последний пункт из меню.
menu.remove(menuItem3);
// Можно прослушивать события не каждого отдельного элемента, а сразу всей коллекции.
menu.events.add('click', function (event) {
// Запрашиваем порядковый номер элемента, который проинициировал событие.
console.log('menu item #' + menu.indexOf(event.get('target')));
});
Имя |
Тип |
Описание |
Менеджер событий. Унаследовано от IEventEmitter. |
||
Менеджер опций. Унаследовано от ICustomizable. |
События
Имя |
Описание |
Произошло добавление дочернего объекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • child - добавленный дочерний элемент. |
|
Сменилась карта. Поля данных: • newMap - новая карта. Унаследовано от IParentOnMap. |
|
Изменение в опциях объекта. Унаследовано от ICustomizable. |
|
Сменился родительский объект. Поля данных: • oldParent - старый родитель; Унаследовано от IChild. |
|
Произошло удаление дочернего объекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • child - удаленный дочерний элемент. |
Методы
Имя |
Возвращает |
Описание |
Добавляет элемент в коллекцию. |
||
Вызывает функцию-обработчик для всех элементов коллекции. |
||
Object[] |
Вызывает функцию-фильтр для всех элементов коллекции. При возвращении фильтром ненулевого значения элемент коллекции попадает в конечный массив. |
|
Object |
Returns элемент коллекции или null, если номер находится вне диапозона номеров коллекции. |
|
getAll() |
Object[] |
Returns массив со всеми элементами коллекции. |
Returns итератор для перебора элементов коллекции. |
||
Number |
Returns количество элементов коллекции. |
|
getMap() |
Returns карту, которой принадлежит элемент коллекции. Унаследован от collection.Item. |
|
Returns родительский объект. Унаследован от collection.Item. |
||
Number |
Returns порядковый номер объекта в коллекции либо -1, если объект не найден. |
|
Функция, которая вызывается при добавлении элемента на карту. Для выполнения дополнительных действий при добавлении объекта на карту переопределите эту функцию. Унаследован от collection.Item. |
||
Функция, которая вызывается при удалении элемента с карты. Для выполнения дополнительных действий при удалении объекта с карты переопределите эту функцию. Унаследован от collection.Item. |
||
Удаляет элемент из коллекции. |
||
Удаляет все элементы из коллекции. |
||
Устанавливает родителя для заданного элемента коллекции. Унаследован от collection.Item. |
Описание событий
add
Произошло добавление дочернего объекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• child - добавленный дочерний элемент.
remove
Произошло удаление дочернего объекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• child - удаленный дочерний элемент.
Описание методов
add
{Collection} add(child)
Добавляет элемент в коллекцию.
Returns ссылку на себя.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: collection.Item Элемент, который необходимо добавить. |
* Обязательный параметр/опция.
each
{Collection} each(callback, context)
Вызывает функцию-обработчик для всех элементов коллекции.
Returns ссылку на себя.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: Function Функция-обработчик. На вход получает элемент коллекции. При возвращении функцией значения false перебор останавливается. |
|
— |
Тип: Object Контекст вызываемой функции. |
* Обязательный параметр/опция.
filter
{Object[]} filter(filterFunction)
Вызывает функцию-фильтр для всех элементов коллекции. При возвращении фильтром ненулевого значения элемент коллекции попадает в конечный массив.
Returns массив из элементов, которые попали в выборку.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: Function Функция, которая является фильтром для объектов коллекции. Первым параметром принимает элемент из коллекции. Должна возвращать булевое значение. |
* Обязательный параметр/опция.
get
{Object} get(index)
Returns элемент коллекции или null, если номер находится вне диапозона номеров коллекции.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: Number Порядковый номер элемента в коллекции. |
* Обязательный параметр/опция.
getAll
{Object[]} getAll()
Returns массив со всеми элементами коллекции.
getIterator
{IIterator} getIterator()
Returns итератор для перебора элементов коллекции.
getLength
{Number} getLength()
Returns количество элементов коллекции.
indexOf
{Number} indexOf(childToFind)
Returns порядковый номер объекта в коллекции либо -1, если объект не найден.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: Object Искомый объект. |
* Обязательный параметр/опция.
remove
{Collection} remove(child)
Удаляет элемент из коллекции.
Returns ссылку на себя.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: collection.Item Элемент, который необходимо удалить. |
* Обязательный параметр/опция.
removeAll
{Collection} removeAll()
Удаляет все элементы из коллекции.
Returns ссылку на себя.
Обязательный параметр/опция.