在mvc中筛选选择

问题描述:

我想创建一个自动填充输入字段,以便用户开始输入,并在下拉菜单中显示可能的值。我将从数据库中获得的数据。动态商店的东西...我怎么能从控制器调用我的Methode?在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> 

感谢输入。

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

感谢ysou。我是否必须将这段代码放在构造函数中(或者其他类似的东西),还是需要添加一些onChange方法? – Herrminator

+1

这段代码应该放在你的页面的“controller”中 - 如果它是另一个父窗口部件,你应该放在“postCreate”中,或者它只是一些执行onDocumentReady的代码,你也可以放在那里 – Corina