2016-10-13 50 views
0

預期的行爲: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); 
      } 
     }); 

回答

0

從你這個形容,this example將覆蓋滿足你的需要。它的工作原理與彈出窗口類似。 如果這不是你想要的,你應該繼續保持原樣。在事件代表團,你將不得不打電話給「handleSuggestTransmitter」。我會改變它一點,所以你可以調用它,而不需要輸入,然後它會返回所有。 接下來,您需要驗證輸入以驗證輸入是否存在於列表中。 Here是如何在字段上設置狀態的示例。

順便說一下,爲什麼你使用JavaScript視圖?

+0

我正在尋找不使用彈出窗口的解決方案。 – Remiwaw

+0

編輯: 我正在尋找不使用彈出窗口的解決方案。 我知道如何獲取建議列表(getSuggestionItems方法)。 問題是我不知道如何顯示這些項目(顯示建議列表中的所有項目不在彈出窗口中,就像它在「正常使用」中顯示的那樣)。 至於JavaScript視圖,這只是我加入之前項目中使用的方法。 – Remiwaw

+0

畢竟我用你的解決方案彈出窗口,它工作正常:) – Remiwaw