预期行为:
1)用户点击输入字段,显示所有值的列表
2)当用户输入至少3个字符时开始过滤
3)用户如果被迫选择建议(他不能提供不在建议清单中的价值)。
到目前为止,我有以下控制权:
this.transmitter = new sap.m.Input({
id : this.createId("transmitterControl"),
// placeholder : "Enter emiter ...",
showSuggestion : true,
suggest : oCon.handleSuggestTransmitter,
suggestionItems:{
path:"/services",
template: new sap.ui.core.Item({text:"{serviceName}", key:"{serviceId}"})
},
startSuggestion : 3,
suggestionItemSelected : function(evt) {
oCon.onSuggestionTransmitterSelected(evt);
},
}).addStyleClass("font_bold")
对于控制器:
onSuggestionTransmitterSelected : function (e) {
var selectedTransmitter = e.getParameter("selectedItem").getBindingContext().getObject();
this.serviceData.transmitter = selectedTransmitter;
},
showAllSuggestion : function (transmiterAutoComplete) {
console_log("showAllSuggestion");
transmiterAutoComplete.getBinding("suggestionItems");
},
handleSuggestTransmitter: function(e) {
var sTerm = e.getParameter("suggestValue");
var aFilters = [];
if (sTerm) {
aFilters.push(new sap.ui.model.Filter("serviceName", sap.ui.model.FilterOperator.StartsWith, sTerm));
}
e.getSource().getBinding("suggestionItems").filter(aFilters);
},
支付建议有效,当我输入3个字符时会显示一个弹出窗口,并且可以进行过滤。
我缺少的是什么: a)单击输入字段显示整个列表。 b)强制选择(不知道)
我尝试过设置startSuggestion:0,但它没有用。根据文档,它应该显示弹出窗口,并提示onClick:
https://sapui5.hana.ondemand.com/docs/api/symbols/sap.m.Input.html#getStartSuggestion
getStartSuggestion():int获取property的当前值 startSuggestion。输入之前输入文本的最小长度 建议事件被解雇。默认值为1表示建议 用户输入后输入事件。当它设置为0时,建议 当没有文本的输入获得焦点时触发事件。
默认值为1。
我也试过附上onfocusin事件。它工作,处理程序被调用,但我不知道我应该调用什么方法来显示建议弹出列表。
transmiterAutoComplete.addEventDelegate({
onfocusin : function(){
console_log("testTransmiterComplete");
app.getCurrentController().showAllSuggestion(transmiterAutoComplete);
}
});
答案 0 :(得分:0)
根据您的描述,this example将涵盖您的大部分需求。它的工作原理就像一个弹出窗口。 如果这不是你想要的,你应该继续。在事件授权中,您必须调用" handleSuggestTransmitter"。我会稍微改变它,所以你可以在不需要输入的情况下调用它,然后它会全部返回。 接下来,您需要对输入进行验证,以验证输入是否存在于列表中。 Here是如何在字段上设置状态的示例。
顺便问一下,为什么要使用JavaScript视图?