代码之家  ›  专栏  ›  技术社区  ›  Chan Yoong Hon

SAPUI5搜索字段建议自动完成

  •  1
  • Chan Yoong Hon  · 技术社区  · 7 年前

    我正在开发一个SAPUI5应用程序。我想实现的是在我的搜索字段中有一个建议列表自动完成。例如,当我键入“app”,

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

    视图.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>
    

    控制器.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 回复  |  直到 7 年前
        1
  •  2
  •   Jorg    7 年前

    odata服务有时间问题,会弹出建议。我以前也被抓到了。技术上,建议框在oData完成之前打开,这就是示例代码工作的原因-它是一个JSON模型。我的解决方案是这样的

     var search = this.byId('searchField');
     var binding = search.getBinding("suggestionItems");
    
     binding.filter(filters);
     binding.attachEventOnce('dataReceived', _ => search.suggest());