2016-11-07 1 views
0

사용자가 타이핑을 시작하고 드롭 다운에서 가능한 값을 표시 할 수 있도록 자동 완성 입력란을 만들고 싶습니다. 데이터는 데이터베이스에서 가져옵니다. 동적 저장소를 사용하여 ... 컨트롤러에서 Methode를 어떻게 호출 할 수 있습니까? FilteringSelect in mvc

나는 다음과 같은 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