2016-10-13 25 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)強制選択(全く考えられない)

IveはstartSuggestion:0に設定しようとしましたが、動作しませんでした。それは提案のonClickとポップアップが表示されるはずですdocumenationによると

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

getStartSuggestionを():intは財産 startSuggestionの現在の値を取得します。 がイベントが発生する前に、入力されたテキストの最小長。デフォルト値は1です。これは、ユーザ入力後に イベントが発生したことを意味します。 0に設定されている場合は、テキストが入力されていない入力がフォーカスを取得すると、 イベントが発生します。

デフォルト値は、私もonfocusinイベントを取り付けてみました。1.

です。それは働いて、ハンドラが呼び出されますが、私はどのようなメソッドを私は提案のポップアップリストを表示する必要がありますかわからない。

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