2016-11-07 5 views
0

ユーザーが入力を開始するように入力フィールドを自動作成し、ドロップダウンで入力可能な値を表示します。データはデータベースから取得します。動的な店舗で何か...私はどのように私のメソッドを呼び出すことができますコントローラから?mvcでFilteringSelect

私はJSの機能を以下ました:

searchNames:function() 
    { 
     var jsonStore = new JsonRest({ 
      url: config.rootContext + '/link/to/controllerMethod' 
     }); 
     var memoryStore = new Memory(); 
     var myStore = new Cache(jsonStore, memoryStore); 


     var fs = new FilteringSelect({ 
      id: dijit.byId("serviceSelect"), 
      store : memoryStore, 
     }); 
     debugger; 
     when(myStore.query({id:""})), 
      function (items, request) 
      { 
       var val = ""; 
       if(items.length>0) val = items[0].id; 
       fs.set('value', val); 
      } 
    }, 

そして、私のウィジェットが含まれています入力の

<td><select data-dojo-type="dijit/form/FilteringSelect" id="serviceSelect" data-dojo-attach-event="onClick:searchNames"></select></td> 

感謝を。

答えて

1

FilteringSelectウィジェットは既にあなたのためにこれを行いますので、あなたがする必要があるのはストアをセットしてすぐに使用できます。

すでにHTMLに設定属性を持っているので、あなたのJSコードで別のFilteringSelectを作成する必要はありません。

var jsonStore = new JsonRest({ 
    url: config.rootContext + '/link/to/controllerMethod' 
}); 
var memoryStore = new Memory(); 
var myStore = new Cache(jsonStore, memoryStore); 

var selectWidget = registry.byId('serviceSelect'); // registry refers to dijit/registry 
selectWidget.set('store', myStore); 

HTMLは次のようになります。

<td><select data-dojo-type="dijit/form/FilteringSelect" id="serviceSelect"></select></td> 
+0

ありがとうございます。私はこのコードをコンストラクタ(または何かsmilar)に入れなければならなかったのですか?あるいは、いくつかのonChangeメソッドを追加する必要がありましたか? – Herrminator

+1

このコードはあなたのページの "コントローラ"になければなりません - 別の親ウィジェットの場合は "postCreate"を入れるか、onDocumentReadyを実行するコードの場合はそこに置くこともできます – Corina

関連する問題