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

Я работаю над пользовательским элементом управления, который имеет настраиваемые свойства.

Если я хочу использовать значение свойства, это очень просто. Для значения свойства "maptype" я могу использовать композитныйData.maptype Но как мне это сделать с группами?

Например, у меня есть группа под названием «Маркер», и их может быть несколько. Каждый маркер имеет пять свойств: «адрес», «заголовок», «слой», «информационный текст» и «иконка». Как мне получить доступ, например, к значению title на третьем маркере?


person Martin Meijer    schedule 16.02.2012    source источник


Ответы (3)


группа свойств интерпретируется как класс Java com.ibm.xsp.binding.PropertyMap. Несколько экземпляров интерпретируются как класс java.lang.ArrayList. Зная это, я бы попробовал

compositeData.Marker[2].address

для простой привязки данных. Или

compositeData.Marker.get(2).get('address')

для доступа через чистый javascript.

person Denny    schedule 17.02.2012
comment
Спасибо, Денни, я решил проблему с вашей помощью, добавив некоторые дополнительные файлы '. Это сработало для меня: var test = [ #{javascript:' + CompositeData.marker[0].address + '} ]; оповещение (тест); - person Martin Meijer; 17.02.2012

Есть много способов его использования. Это просто коллекция со свойствами, которые вы можете повторять. Одним из способов может быть использование его внутри элемента управления повторением. Это пример того, как вы можете его использовать:

            <xp:repeat id="repeat1" rows="30"
                value="#{javascript:compositeData.Marker}"
                var="rowMarker">

                <xp:label id="lbladdress"
                    value="#javascript:rowMarker.address}">
                </xp:label>
                <xp:label id="lbltitle"
                    value="#javascript:rowMarker.title}">
                </xp:label>

            </xp:repeat>
person Ferry Kranenburg    schedule 16.02.2012
comment
Спасибо, Ферри, ваш пример о том, как вы можете зациклить повторитель, но я хочу зациклить на Javascript. Я ищу что-то вроде CompositeData.Marker[2].title, но это не работает. - person Martin Meijer; 17.02.2012

Если вы хотите зациклиться, вы можете просто использовать: for(marker in componentDate.Marker){ marker.title; }

person BvG013    schedule 12.09.2012