MultiComboBox选中值后令牌不显示问题求助
解决MultiComboBox选中后不显示令牌的问题
你遇到的问题确实和数据绑定的方式有关——手动循环创建core:Item的方式没有触发UI5控件内置的绑定机制,导致控件无法正确跟踪选中状态并生成令牌。下面是更符合UI5最佳实践的解决方案:
问题分析
你的JSON数据中fruits是一个纯字符串数组,手动逐个添加Item虽然能显示选项,但控件无法将选中项和内部状态关联起来,自然无法生成预期的令牌。改用聚合绑定让控件自动处理Item生成和状态跟踪,就能解决这个问题。
解决方案
1. 简化JavaScript代码
不需要手动循环创建Item,只需要确保模型正确设置到视图即可:
var data = sap.ui.getCore().getModel("myModel").getData(); var oModel = new sap.ui.model.json.JSONModel(data); this.getView().setModel(oModel, "myModel"); // 移除原来的循环添加Item的代码
2. 修改XML视图的MultiComboBox配置
通过聚合绑定直接将fruits数组关联到MultiComboBox的items属性:
<MultiComboBox id="MCBId" width="280px" class="sapUiTinyMarginTop" items="{path: 'myModel>/B/0/fruits'}" > <core:Item text="{myModel>}" key="{myModel>}" /> </MultiComboBox>
代码解释
items="{path: 'myModel>/B/0/fruits'}":指定绑定的数据源为模型myModel中B数组第一个元素下的fruits数组<core:Item text="{myModel>}" key="{myModel>}" />:因为fruits是纯字符串数组,直接将数组元素的值同时作为Item的text和key
这样设置后,MultiComboBox会自动从模型中生成选项,并且能正确跟踪选中状态,选中选项后就会按照默认行为显示令牌了。
如果你一定要保留手动添加Item的方式,需要额外给MultiComboBox的selectedKeys属性绑定一个模型数组来跟踪选中项,但这种方式不如聚合绑定简洁高效,不推荐使用。
内容的提问来源于stack exchange,提问作者Venkatesh Machineni
相关产品推荐
相关产品推荐

