預期的行爲:sap.m.input顯示所有建議,並被迫選擇建議
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);
},
Dispaying建議的工作原理,當我輸入3個字符的彈出顯示和過濾可以做。
我缺少的東西: a)點擊輸入欄顯示整個列表。 b)力量選擇(無論如何)
我試着設置startSuggestion:0,但它沒有奏效。據documenation應該與建議的onClick顯示彈出:
https://sapui5.hana.ondemand.com/docs/api/symbols/sap.m.Input.html#getStartSuggestion
getStartSuggestion():int獲取財產 startSuggestion的電流值。在輸入 建議事件之前輸入的文本的最小長度被觸發。默認值爲1,表示在用戶鍵入輸入後觸發建議 事件。當它設置爲0時,建議 事件在沒有文本的輸入獲得焦點時觸發。
默認值是1。
我還試圖附連onfocusin事件。它的工作,處理程序被調用,但我不知道我應該調用什麼方法來顯示建議彈出列表。
transmiterAutoComplete.addEventDelegate({
onfocusin : function(){
console_log("testTransmiterComplete");
app.getCurrentController().showAllSuggestion(transmiterAutoComplete);
}
});
我正在尋找不使用彈出窗口的解決方案。 – Remiwaw
編輯: 我正在尋找不使用彈出窗口的解決方案。 我知道如何獲取建議列表(getSuggestionItems方法)。 問題是我不知道如何顯示這些項目(顯示建議列表中的所有項目不在彈出窗口中,就像它在「正常使用」中顯示的那樣)。 至於JavaScript視圖,這只是我加入之前項目中使用的方法。 – Remiwaw
畢竟我用你的解決方案彈出窗口,它工作正常:) – Remiwaw