我在 sap.ui.table.Table
中有一列。在此列中,我想根据值显示我的模板控件。如果我有DateTime
的类型,我想使用 DatePicker
,type of DateTime
a DateTimePicker
等。
现在,我想在我的xmlview/fragment中有所不同,但它仅检查我的最后一个控件(dateTimePicker(:
<table:template>
<Input id="masterDataValueInput"
value="{thingDetail>value}"
placeholder="{path:'thingDetail>type', formatter:'.formatter.placeHolderFormatter'}"
visible="{= ! ${path: 'thingDetail>properties'} && ${path: 'thingDetail>type', formatter: '.formatter.inputVisibility'}}"
enabled="{appView>/isCurrentTenant}"
type="{path:'thingDetail>type', formatter:'.formatter.inputTypeFormatter'}"
/>
<DatePicker id="masterDataValueDate"
value="{thingDetail>value}"
displayFormat="short"
visible="{= ! ${path: 'thingDetail>properties'} && ${path: 'thingDetail>type', formatter: '.formatter.dateVisibility'}}"
enabled="{appView>/isCurrentTenant}"
change="handleChange"
/>
<DateTimePicker id="masterDataValueDateTime"
value="{thingDetail>value}"
displayFormat="short"
visible="{= ! ${path: 'thingDetail>properties'} && ${path: 'thingDetail>type', formatter: '.formatter.datetimeVisibility'}}"
enabled="{appView>/isCurrentTenant}"
change="handleChange"
/>
</table:template>
- 因此,
<Input>
和<DatePicker>
控件从未显示。 - 我的
formatter
中的方法从未被调用。
仅考虑最后一个控件(dateTimePicker(的原因是因为sap.ui.table.column的template
聚合仅等待一个控件(0..1(。
为了使用所有三个控件,您必须将它们包含在另一个容器/布局控件中,例如HorizonTallayout:
<table:template>
<layout:HorizontalLayout>
<!-- your controls -->
</layout:HorizontalLayout>
<table:template>
关于表达式绑定..
尝试使用parts
:
visible="{= !${thingDetail>properties} && ${parts: [{path: 'thingDetail>type'}], formatter: '.formatter.inputVisibility'}}"
如果没有称呼格式化器,则将表达式绑定(无论如何都很难阅读(,然后与适当的格式化构成通常的属性:
visible="{
parts: [
'thingDetail>properties',
'thingDetail>type'
],
formatter: '.formatter.myFormatter'
}"