Свойство с типом group предназначено для группировки в себе части или всех контейнеров из какого либо виртуального массива. При инициализации данного свойства htmlix ищет в html разметке контейнеры объявленные внутри него и добавляет их в поле groupChild, а также добавляет ссылку на их виртуальный массив в поле groupArray.
В дальнейшем если понадобится добавить в группу новые контейнеры можно просто вызвать метод:
setProp({container_prop1
: "данные1", container_prop2
: "данные2", и т.д. }) - чтобы добавить контейнер в группу, либо setProp([ {container_prop1
: "данные1", container_prop2
: "данные2", и т.д. }, {container_prop1
: "данные1", container_prop2
: "данные2", и т.д. }]) - чтобы перезаписать группу.
Htmlix создаст контейнеры для группы из массива который был сохранен в свойство groupArray. Если при инициализации в свойстве с типом group не будет контейнеров, то соответственно ссылка на массив не будет создана, поэтому при добавлении новых контейнеров в группу htmlix попробует отискать ссылку на groupArray в свойствах group смежных контейнеров (если они не пустые) и если не найдет выдаст ошибку. Поэтому при создании свойства с типом group в нем либо должен быть контейнер который здесь будет отображаться либо шаблон template в свойстве group нулевого контейнера. Либо при использовании метода setProp напрямую указать виртуальный массив из которого брать шаблоны:
setProp( {componentName: "имя_виртуального_массива", group: [ {container_prop1: "данные1", container_prop2: "данные2", и т.д. }, {container_prop1: "данные1", container_prop2: "данные2", и т.д. }] } );
Открыв в консоли свойство с типом group
можно увидеть следующие поля:
groupArray
- ссылка на виртуальный массив контейнеров данной группы;groupChild
- группа контейнеров из виртуального массива, порядковый номер совпадает с полем groupId конкретного контейнера группы.Также у свойства с типом group
имеются дополнительные методы:
.removeFromGroup(groupID)
- удаляет контейнер из группы а также из виртуального массива, где groupID - индекс контейнера в группе;
.clearGroup()
- удаляет все контейнеры из данного свойства а также из виртуального массива;
.addToGroup(container, insertLocation)
- добавляет контейнер в группу и создает в нем поля .groupId - индекс группы, .groupParent - ссылка на свойство в котором находится контейнер
где container - сам контейнер, insertLocation - позиция для вставки, если не указать то вставит в конец группы;
reuseGroup(arrayWithObjects)
- аналогичен reuseAll(arrayWithObjects) - только не для массива а для группы, единственная особенность его работы заключается в том,
что в свойстве должна быть ссылка на виртуальный массив данной группы this.groupArray если в данном свойстве ее нет, то он попытается отыскать ее в свойствах смежных контейнеров, если не найдет то не сработает.
Поэтому при создании разметки, в свойстве с типом group нулевого контейнера, должен находиться контейнер который здесь будет отображаться, чтобы запомнить на него ссылку, если необходимо создать пустое свойство для всех контейнеров и только в процессе добавлять туда контейнеры, необходимо создать шаблон с типом "template" и (style="display: non") для того чтобы запомнить ссылку на массив группы, либо использовать метод .createNewGroup(groupArr, componentName)
.createInGroup(props, insertLocation)
- создает контейнер в виртуальном массиве и затем добавляет в группу на указанную позицию, если не указать добавит в конец, для работы требует наличие поля this.groupArray !=null
которое добавляется при инициализации приложения. Поэтому при создании разметки, в свойстве с типом group нулевого контейнера, должен находиться контейнер который здесь будет отображаться, чтобы запомнить на него ссылку,
если необходимо создать пустое свойство для всех контейнеров и только в процессе добавлять туда контейнеры, необходимо создать шаблон с типом "template" и (style="display: non") для того чтобы запомнить ссылку на массив группы.
.createNewGroup(groupArr, componentName)
- если виртуальный массив данной группы this.groupArray.pathToComponent совпадает с именем componentName
то вызывает метод reuseGroup(groupArr)
, если не совпадает, удаляет все из группы и создает
новую с контейнерами из виртуального массива componentName
, где groupArr
- массив с объектами, ключи которых - имена свойств, а данные этих ключей, данные для свойств.
Вызов метода setProp(val) - в свойстве с типом group:
.createInGroup(val, insertLocation)
, insertLocation=val.locationreuseGroup(val)
val.componentName
-имя виртуального массива, val.group
- массив с объектами, ключами которых являются имена свойств - вызовет метод .createNewGroup(val.group, val.componentName)
Вызов метода removeProp(val)
.clearGroup()
.removeFromGroup(val=groupID)
Вызов метода getProp() возвращает массив с объектами ключами которых будут названия свойств, а значения,
данные полученные из этих свойств на каждом контейнере, использует работает на основе метода getAllProps(),
если передать параметром mapObject={key1: "", key2: {ke1: ""} } .getProp(mapObject)
,
вернет свойства только совпадающие по названиям с key, таким образом можно получить развернутый объект со всеми значениями свойств либо со всеми нужными значениями свойств из дочерних контейнеров;