/ / sap.m.input pokaż wszystkie sugestie i wymuszoną sugestię - javascript, sapui5

sap.m.input pokaż wszystkie sugestie i wymuszone wybranie sugestii - javascript, sapui5

Oczekiwane zachowanie:

1) Użytkownik klika pole wprowadzania i wyświetla listę wszystkich wartości

2) Filtrowanie rozpoczyna się, gdy użytkownik wprowadzi co najmniej 3 znaki

3) Użytkownik, jeśli został zmuszony do wyboru sugestii (nie może podać wartości, która nie znajduje się na liście sugestii).

Do tej pory mam następujące kontrolę w widoku:

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")

A dla kontrolera:

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);
},

Sugestia Dispaying działa, gdy wprowadzę 3 znaki, pojawi się wyskakujące okienko i można będzie filtrować.

Czego mi brakuje: a) wyświetlenie całej listy po kliknięciu pola wprowadzania. b) wybór siły (bez żadnego pomysłu)

Ive próbował ustawić startSuggestion: 0, ale nie działa. Zgodnie z dokumentacją powinna wyświetlić popup z sugestią onClick:

https://sapui5.hana.ondemand.com/docs/api/symbols/sap.m.Input.html#getStartSuggestion

getStartSuggestion (): int Pobiera bieżącą wartość właściwości startSuggestion. Minimalna długość wprowadzonego tekstu na wejściu przed sugeruje, że zdarzenie zostało zwolnione. Wartością domyślną jest 1, co oznacza sugerowanie zdarzenie jest uruchamiane po wpisaniu typów przez użytkownika. Kiedy jest ustawione na 0, zasugeruj Zdarzenie jest wywoływane, gdy wejście bez tekstu zostaje skupione.

Domyślna wartość to 1.

Próbowałem też dołączyć do zdarzenia onfocusin. Udało się, nazywa się program obsługi, ale nie wiem, jaką metodę powinienem wywołać, aby wyświetlić listę wyskakujących sugestii.

   transmiterAutoComplete.addEventDelegate({
onfocusin : function(){
console_log("testTransmiterComplete");
app.getCurrentController().showAllSuggestion(transmiterAutoComplete);
}
});

Odpowiedzi:

0 dla odpowiedzi № 1

z tego co opisujesz, ten przykład pokryłoby większość twoich potrzeb. Działa jak popup. Jeśli tego nie chcesz, powinieneś kontynuować tak, jak jest. W przypadku delegacji będziesz musiał wywołać "handleSuggestTransmitter". Zmieniłbym to trochę, żebyś mógł go wywołać bez potrzeby wprowadzania danych, a następnie wróci wszystko. Następnie musisz zweryfikować dane wejściowe, aby sprawdzić, czy dane wejściowe są obecne na liście. Tutaj jest przykładem, jak ustawić status na polu.

Przy okazji, dlaczego używasz widoków JavaScript?