/ / sap.m.input zobraziť všetky návrhy a nútené vybrať návrhy - javascript, sapui5

sap.m.input ukázať všetky návrhy a nútené zvoliť návrh - javascript, sapui5

Očakávané správanie:

1) Užívateľ klikne na vstupné pole a zobrazí sa zoznam všetkých hodnôt

2) Filtrovanie sa spustí, keď používateľ zadá aspoň 3 znaky

3) Užívateľ, ak je nútený vyberať návrh (nemôže poskytnúť hodnotu, ktorá nie je v zozname návrhov).

Zatiaľ mám nasledujúcu kontrolu:

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 pre kontrolóra:

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

Spustenie návrhu funguje, keď sa zobrazia 3 znaky, zobrazí sa vyskakovacie okno a filtrovanie sa môže vykonať.

Čo chýba: a) zobrazenie celého zoznamu po kliknutí na vstupné pole. b) výber sily (žiadna myšlienka)

Skúsil som nastavenie startSuggestion: 0, ale to nefungovalo. Podľa dokumentácie by sa mal zobraziť vyskakovací okno s návrhom onClick:

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

getStartSuggestion (): int Získanie aktuálnej hodnoty nehnuteľnosti startSuggestion. Minimálna dĺžka zadaného textu pred vstupom naznačujú, že udalosť je vypálená. Predvolená hodnota je 1, čo znamená navrhovanie udalosť sa vypáli po zadaní typov používateľov. Keď je nastavené na hodnotu 0, navrhnite udalosť je vypálená pri vstupe bez zaostrenia.

Predvolená hodnota je 1.

Tiež som sa pokúsil pripojiť onfocusin udalosť. Fungovalo, obsluha sa volá, ale neviem, akú metódu by som mal zavolať na zobrazenie zoznamu návrhov.

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

odpovede:

0 pre odpoveď č. 1

z toho, čo to popisujete, v tomto príklade pokryje väčšinu vašich potrieb. Funguje to však ako popup. Ak to nie je to, čo chcete, mali by ste pokračovať ako je. Pri delegovaní udalostí budete musieť zavolať "handleSuggestTransmitter". Chcel by som to trochu zmeniť, aby ste si ho mohli dovolávať bez toho, aby ste skutočne potrebovali vstup, a potom to všetko vráti. Ďalej je potrebné overiť, či je vstup prítomný v zozname. Tu je príkladom, ako nastaviť stav na pole.

Mimochodom, prečo používate zobrazenia jazyka JavaScript?