Добавьте targetType: 'any'
к информации привязки свойств, в которой возникла проблема. Например:
<tnt:InfoLabel
text="{
path: 'LastName',
formatter: '.getMyText'
}"
colorScheme="{
path: 'LastName',
formatter: '.getMyColorScheme'<strong>,</strong>
<strong>targetType: 'any'</strong>
}"
/>
С sap.ui.model.odata.v4.ODataModel
, типы данных в привязках свойств автоматически определяются в соответствии с типом EDM свойства сущности. Т.е. в приведенном выше случае: даже без определенного type
, явно назначенного свойству text
, v4.ODataPropertyBinding
автоматически выбирает String
тип (потому что LastName
имеет Type="Edm.String"
в $ metadata) и присваивает его type
:
<tnt:InfoLabel
text="{
path: 'LastName',
formatter: '.getMyText',
<em>type: 'sap.ui.model.odata.type.String'</em> <-- automatically added by v4.ODataPropertyBinding
}"
. Это нормально для свойства text
, поскольку оно фактически ожидает значение string , но делает то же самое для других свойства, такие как colorScheme
, который ожидает значения int , приводит к исключению FormatException. *
Чтобы предотвратить автоматическое c Определение типа , Необходимо добавить targetType: 'any'
.
* С commit: 4611772
, который доступен с 1.80, мы можем увидеть соответствующее сообщение об ошибке в консоли:
FormatException в свойстве colorScheme из 'Element sap.tnt.InfoLabel # ...': не является допустимым значением int. Подсказка: отдельные свойства, на которые есть ссылки в составных привязках и в выражениях привязки, автоматически преобразуются в тип связанного свойства элемента управления, если не указан другой targetType. targetType: 'any' может избежать преобразования и привести к ожидаемому поведению.