我在表外有一个 ComboBox1,在表内有一个 ComboBox2,ComboBox1(表外)我可以访问组合框 .getBinding("items"),但 ComboBox2(表内)我不能。
我需要根据另一列的绑定动态过滤ComboBox2(在Table内),当onValueChange方法更改时触发。
我在两个组合中使用相同的数据绑定。
你能帮我吗?
XML
<ComboBox
id="cmbBox1"
selectedKey="{naoConformidade}"
items="{/ncCollection}"
showSecondaryValues="true"
selectionChange="onNcSelected">
<core:ListItem key="{code}" text="{name}" additionalText="{key}" />
</ComboBox>
<IconTabBar
expanded="{device>/isNoPhone}"
class="sapUiSmallMarginBottom sapUiResponsiveContentPadding">
<items>
<IconTabFilter
key="info"
text="Conteúdo">
<Table id="idProductsTable"
inset="false"
items="{/detail/lines}">
<columns>
<Column>
<Text text="Especificação" />
</Column>
<Column>
<Text text="Valor Encontrado" />
</Column>
<Column>
<Text text="NC" />
</Column>
</columns>
<items>
<ColumnListItem vAlign="Middle">
<cells>
<Text text="{nomeEspecificacao}" />
<Input value="{vlrEncontrado}" change="onValueChange" />
<ComboBox
id="cmbBox2"
selectedKey="{naoConformidade}"
items="{/ncCollection}"
showSecondaryValues="true"
selectionChange="onNcSelected">
<core:ListItem key="{code}" text="{name}" additionalText="{key}" />
</ComboBox>
</cells>
</ColumnListItem>
</items>
</Table>
控制器
onValueChange: function (oEvent) {
this.byId("cmbBox1").getBinding('items') //return bind OK
this.byId("cmbBox2").getBinding('items') //return undefined
}
我一定是做错了什么愚蠢的事情。
我测试了您的代码,它对我有用,不同之处在于我创建了一个本地模型来将项目绑定到组合框。我认为你应该审视一下你的人际关系。 这是我用来测试的简化方法:
<ComboBox
id="cmbBox1"
selectedKey="{naoConformidade}"
items="{/ncCollection}"
showSecondaryValues="true"
selectionChange="onNcSelected">
<core:ListItem
text="{code}"
additionalText="{key}" />
</ComboBox>
<Table id="idProductsTable">
<columns>
<Column>
<Text text="Especificação" />
</Column>
<Column>
<Text text="Valor Encontrado" />
</Column>
<Column>
<Text text="NC" />
</Column>
</columns>
<items>
<ColumnListItem vAlign="Middle">
<cells>
<Text text="nomeEspecificacao" />
<Input
value="vlrEncontrado"
change="onValueChange" />
<ComboBox
id="cmbBox2"
selectedKey="{naoConformidade}"
items="{/ncCollection}"
showSecondaryValues="true"
selectionChange="onNcSelected">
<core:ListItem
text="{code}"
additionalText="{key}" />
</ComboBox>
</cells>
</ColumnListItem>
</items>
</Table>
控制器:
onInit: function () {
const oModel = new JSONModel({
ncCollection: [
{
code: 'asd123',
key: 'key123'
},
{
code: 'dfhgs345345',
key: 'key321'
},
{
code: 'gjfg46457',
key: 'key231'
}
]
});
this.getView().setModel(oModel);
},
onValueChange: function () {
console.log(`List items of cmbBox1: `, this.byId("cmbBox1").getBinding('items'));
console.log(`List items of cmbBox2: `, this.byId("cmbBox2").getBinding('items'));
}
希望对你有帮助。