SAPUI5搜索字段建议自动完成

时间:2018-08-20 08:05:35

标签: xml filtering sapui5

我正在开发SAPUI5应用程序。我要实现的是在搜索字段中自动完成建议列表。例如,当我输入“ app”时, 我将列出“苹果,应用程序”的建议。建议列表是从xsodata Web服务中检索的。

我在我的SAPUI5中使用enableSuggestions和proposalionItems,但是它根本不起作用。以下是我的示例代码。

view.xml

    <headerToolbar>
        <Toolbar>
            <Title text="Product Module"/>
            <ToolbarSpacer/>
            <SearchField width="50%" enableSuggestions="true" search="onFilterProducts" suggest="onSuggest"
            suggestionItems="{
                path: 'newspageModel>/Product',
                sorter: { path: 'BRAND_NO' }
            }"
            >
                <suggestionItems>
                    <SuggestionItem text="{PRODUCT_NAME}"  key="{PRODUCT_NO}"/>
                </suggestionItems>  
            </SearchField>
        </Toolbar>
    </headerToolbar>

Controller.js

    onSuggest: function(oEvent){
            var value = oEvent.getParameter("suggestValue");
        var filters = [];
        if (value) {
            filters = [
                new sap.ui.model.Filter([
                    new sap.ui.model.Filter("PRODUCT_NAME", function(sText) {
                        return (sText || "").toUpperCase().indexOf(value.toUpperCase()) > -1;
                    })
                ], false)
            ];
        }

        this.oSF.getBinding("suggestionItems").filter(filters);
        this.oSF.suggest();
    }

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

odata服务存在计时问题,并且弹出建议。以前也把我吸引住了。从技术上讲,建议框会在oData完成之前打开,这就是示例代码起作用的原因-它是JSON模型。我的解决方案看起来像这样

 var search = this.byId('searchField');
 var binding = search.getBinding("suggestionItems");

 binding.filter(filters);
 binding.attachEventOnce('dataReceived', _ => search.suggest());