我使用的是UI5框架v1.38.39,我想要做一个定制的组合框(不包括sap.m.Combobox,而是custom.comboboxsearch (包括sap.m.combobox和sap.m.comboboxbase)),其中我可以从键和文本中搜索内部的内容(通过包含进行搜索),这样我就可以在自定义控件中得到类似的内容:
sap.ui.define([
"sap/m/ComboBox",
"sap/m/ComboBoxBase"
],
function (oComboBox, oComboBoxBase) {
"use strict";
/*some stuff*/
sValue = oEvent.target.value;
aVisibleItems1 = this.filterItems({
property: "text",
value: sValue
});
aVisibleItems2 = this.filterItems({
property: "key",
value: sValue
});
/*some stuff*/我的问题是,我没有2个过滤器,第二个简单地替换了第一个,然后我没有属性文本中的项目,只有键,我希望两者都有,然后我尝试:
sValue = oEvent.target.value;
aVisibleItems1 = this.filterItems({
property: ["text","key"],
value: sValue
});这给了我一个错误:
Uncaught : p.charAt不是f.d.filterItems的一个函数(ComboBox.js:6)
ComBox.js是UI5的核心文件,然后我尝试:
sValue = oEvent.target.value;
aVisibleItems1 = this.filterItems({
property: "key" || "text",
value: sValue
});这也不起作用,因为只考虑key而不考虑text,有人有解决方案吗?
PS:当我使用动态绑定时,我想我不可能包含项目,它们是通过另一个控制器绑定的。
意见如下:
<!--some stuff-->
<Label text="{i18n>MyText}" />
<Custom:ComboBoxSearch id="mycustombox" selectionChange='onChange'>
<core:Item key="{key}" text="{text}" />
</Custom:ComboBoxSearch>
<!--some stuff-->项从控制器中添加。
发布于 2019-12-12 20:58:22
嗯,我不知道我是否理解你的问题,但我认为这是你想要的。
<ComboBox
id="combobox1"
showSecondaryValues= "true"
items="{
path: '/yourdata',
sorter: { path: 'text' }
}">
<core:ListItem key="{key}" text="{text}" additionalText = "{key}"/>
</ComboBox>在您的控制器中,它应该如下所示:
this.getView().byId("combobox1").setFilterFunction(function(sTerm, oItem) {
return oItem.getText().match(new RegExp(sTerm, "i")) || oItem.getKey().match(new RegExp(sTerm, "i"));
});因此,您可以搜索键或文本--这并不重要。
https://stackoverflow.com/questions/59305326
复制相似问题