我是OpenUI5的新手,我有一个使用XML视图创建的组合框,因此现在我需要在JavaScript视图中创建相同的组合框。我的版本是1.58.2:
我的xml组合框代码如下,并且可以正常工作:
<ComboBox
id="departmentsDropDown"
selectionChange="handleSelectionChange"
items="{ path: 'departments>/' }"
placeholder="{i18n>departmentSelect}" >
<core:Item key="{departments>name}" text="{departments>org_unit}" />
</ComboBox>
我的JavaScript视图代码如下,它给我一个错误:
var comboBox = new sap.m.ComboBox(this.createId("departmentsComboBox"),{
items : "{ path: 'departments>/' }",
selectionChange : oController.handleSelectionChange
});
错误:
Missing template or factory function for aggregation items of Element sap.m.ComboBox#__jsview1--departmentsComboBox ! -
答案 0 :(得分:1)
在javascript方面,您需要提供有关如何使用组合框(即IE)模板中的实际行的信息。在XML中提供了它;您为此使用core:Item
。在javascript端缺少它。这是添加方式的示例:
new sap.m.ComboBox({
selectedKey: '{model>/key}',
showSecondaryValues: true,
items: {
path: '/Model',
template: new sap.ui.core.ListItem({
key: '{Key}',
text: '{Key}',
additionalText: '{Description}'
})
},
change: _ => {
//change logic
}
})
它不完全相同,但是您显示了如何添加模板。您会发现,对于带有列表或表的聚合的任何控件,您将需要相同类型的逻辑。对于更复杂的控件,您也可以使用片段。