首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写用于将项过滤到组合框中的组合框,如何使用this.filter项

重写用于将项过滤到组合框中的组合框,如何使用this.filter项
EN

Stack Overflow用户
提问于 2019-12-12 13:06:42
回答 2查看 1.6K关注 0票数 0

我使用的是UI5框架v1.38.39,我想要做一个定制的组合框(不包括sap.m.Combobox,而是custom.comboboxsearch (包括sap.m.comboboxsap.m.comboboxbase)),其中我可以从键和文本中搜索内部的内容(通过包含进行搜索),这样我就可以在自定义控件中得到类似的内容:

代码语言:javascript
复制
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个过滤器,第二个简单地替换了第一个,然后我没有属性文本中的项目,只有键,我希望两者都有,然后我尝试:

代码语言:javascript
复制
sValue = oEvent.target.value;
aVisibleItems1 = this.filterItems({
  property: ["text","key"],
  value: sValue 
});

这给了我一个错误:

Uncaught : p.charAt不是f.d.filterItems的一个函数(ComboBox.js:6)

ComBox.js是UI5的核心文件,然后我尝试:

代码语言:javascript
复制
sValue = oEvent.target.value;
aVisibleItems1 = this.filterItems({
  property: "key" || "text",
  value: sValue 
});

这也不起作用,因为只考虑key而不考虑text,有人有解决方案吗?

PS:当我使用动态绑定时,我想我不可能包含项目,它们是通过另一个控制器绑定的。

意见如下:

代码语言:javascript
复制
<!--some stuff-->
<Label text="{i18n>MyText}" />
<Custom:ComboBoxSearch id="mycustombox" selectionChange='onChange'>
    <core:Item key="{key}" text="{text}" />
</Custom:ComboBoxSearch>
<!--some stuff-->

项从控制器中添加。

EN

Stack Overflow用户

发布于 2019-12-12 20:58:22

嗯,我不知道我是否理解你的问题,但我认为这是你想要的。

代码语言:javascript
复制
    <ComboBox
                    id="combobox1"
                    showSecondaryValues= "true"
                    items="{
                        path: '/yourdata',
                        sorter: { path: 'text' }
                    }">
                    <core:ListItem key="{key}" text="{text}" additionalText = "{key}"/>
                </ComboBox>

在您的控制器中,它应该如下所示:

代码语言:javascript
复制
        this.getView().byId("combobox1").setFilterFunction(function(sTerm, oItem) {
            return oItem.getText().match(new RegExp(sTerm, "i")) || oItem.getKey().match(new RegExp(sTerm, "i"));
        });

因此,您可以搜索键或文本--这并不重要。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59305326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档