我有一个包含网站信息的模型。
如果我在“SearchString”的开头搜索(使用FilterOperator.Contains
),输入列表就可以正常填充,但如果我搜索不在字符串开头的字符串,则不会返回任何内容
例如... SearchString =“100 My Town”
'100'的条目有效。 “我的”条目不是!
也没有显示错误。
控制器:
handleSuggest: function (oEvent) {
var sTerm = oEvent.getParameter("suggestValue");
var aFilters = [];
if (sTerm) {
aFilters.push(new Filter("SearchString", sap.ui.model.FilterOperator.Contains, sTerm ));
}
oEvent.getSource().getBinding("suggestionItems").filter(aFilters);
},
查看:
<Input
id="shopInput"
type="Text"
placeholder="Enter Shop Number ..."
showSuggestion="true"
suggest="handleSuggest"
suggestionItems="{/SiteSet}"
change="validateInput"
liveChange="liveChange"
valueStateText="Shop Number must be valid"
suggestionItemSelected="suggestionItemSelected">
<suggestionItems>
<core:Item text="{SearchString}" />
</suggestionItems>
任何想法?
答案 0 :(得分:1)
我现在在https://sapui5.netweaver.ondemand.com/sdk/explored.html#/entity/sap.m.Input/samples
的input.suggestions.custom部分找到了解决方案。handleSuggest : function(oEvent) {
var view = this.getView();
var sTerm = oEvent.getParameter("suggestValue")
view.byId("shopInput").setFilterFunction(function(sTerm, oItem) {
// A case-insensitive 'string contains' style filter
return oItem.getText().match(new RegExp(sTerm, "i"));
});
},
答案 1 :(得分:0)
据我所知,您缺少在Suggestion项目中设置ID,这使您可以搜索它?您的过滤器在SiteId上运行,但您的Suggestion项目仅绑定到SearchString。
这应该有所帮助:
<suggestionItems>
<core:Item key="{SiteId}" text="{SearchString}" />
</suggestionItems>
答案 2 :(得分:0)
我还有另一个与FilterOperator有关的问题。
我的情况涉及:
我将这个过滤器放入了控制器:
aFilter.push(new Filter("description", FilterOperator.Contains, `'${fDescription}'`));
但是过滤器不起作用。
然后,我对问题进行了调查并确定了FilterOperator。其中包含的内容在SAPUI5框架中并未正确建立查询参数。
因为ODataUtils._createFilterSegment函数上的src / sap / ui / model / odata / ODataUtils.js包不包含后缀“ eq true”:
case "Contains":
return "substringof(" + oValue1 + "," + sPath + ")";
在odata.org(https://www.odata.org/documentation/odata-version-2-0/uri-conventions/)中搜索并符合样本:
$filter=substringof('Alfreds', CompanyName) eq true
要解决此问题,我已通过以下方式将控制器更改为使用FilterOperator.EQ:
aFilter.push(new Filter(`substringof('${fDescription}',description)`, FilterOperator.EQ, true));