我正在开发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();
}
有人可以帮我吗?
答案 0 :(得分:1)
odata服务存在计时问题,并且弹出建议。以前也把我吸引住了。从技术上讲,建议框会在oData完成之前打开,这就是示例代码起作用的原因-它是JSON模型。我的解决方案看起来像这样
var search = this.byId('searchField');
var binding = search.getBinding("suggestionItems");
binding.filter(filters);
binding.attachEventOnce('dataReceived', _ => search.suggest());