dojo FilteringSelect from URL默认值

dojo FilteringSelect from URL默认值,url,dojo,default-value,Url,Dojo,Default Value,嗨,我有一个工作的FilteringSelect,它从URL读取。输入名称将查询数据库并返回适当的JSON以填充筛选选择,我可以选择一个值并存储ID <div data-dojo-type="ComboBoxReadStore" data-dojo-id="assignedUserIdstore" data-dojo-props="url:'Welcome.do?call=JS&actionRefId=142', requestMethod:'get'"></div&g

嗨,我有一个工作的FilteringSelect,它从URL读取。输入名称将查询数据库并返回适当的JSON以填充筛选选择,我可以选择一个值并存储ID

<div data-dojo-type="ComboBoxReadStore" data-dojo-id="assignedUserIdstore"
data-dojo-props="url:'Welcome.do?call=JS&actionRefId=142',
requestMethod:'get'"></div>

<input id='assignedUserId' name='value(assignedUserId)'
data-dojo-type='dijit.form.FilteringSelect'
data-dojo-props="store:assignedUserIdstore, pageSize:5,  labelAttr:
'label',queryExpr: '*${0}*', autoComplete: false" />
问题在于设置默认值。我有这个

<script type='text/javascript'>dojo.ready(function(  
  {dijit.byId('assignedUserId').setValue('25');});
</script>
这似乎是以一种方式工作的——它确实调用了服务器,服务器返回了这个消息

{id:25,姓名:John Smith标签:John Smith}

但是,它不会实际使用输入的显示或实际值填充筛选选择。我试图将该值设置为名称,但也没有效果。让它返回一个集合而不是单个项也没有帮助

comboreadstore定义为

  <script type="text/javascript">

          require([
                  "dojo/_base/declare",
                  "dojox/data/QueryReadStore",
                  "dojo/parser",
                  "dijit/form/FilteringSelect"],

                  function(declare, QueryReadStore){

                          declare("ComboBoxReadStore", QueryReadStore, {
                                  fetch:function(request) {
                                          // This results in a xhr request to the following URL (in case of GET):
                                          //      /url.php?q=<searchString> 
                                          request.serverQuery = {q:request.query.name};
                                           return this.inherited("fetch", arguments);
                                  }
                          });

                  }
          );
  </script>

使用dojo.ready不能保证您正在获取的数据已经准备好/加载。当dojo准备就绪并且您所需的所有资产都已加载时,它会启动。因此,我认为您正在尝试将FilteringSelect设置为存储中尚不存在的值。您可以通过等待设置该值,直到商店准备就绪,来解决此问题。如何做到这一点取决于您使用的存储区,我无法真正利用您的代码。我不熟悉ComboBoxReadStore。在谷歌搜索之后,我发现它可能是dojox.data.QueryReadStore的一个扩展,它已经过时并且没有完成。如果是的话,我建议你尽可能改用


此外:dijits上的setValue方法已被弃用,您应该使用set'key',val.

对,但简单URL的功能以及您键入的参数或ID的传递参数尚未实现。看看dojo.store,似乎我必须设置一个完全不同的体系结构来支持它,我没有找到太多的示例。我已经为您设置了一个小示例。使用JsonRest存储的FilteringSelect实际上比您目前正在做的工作更容易:请注意,该示例并不真正起作用,因为plunker显然无法返回api调用,但您可以查看inspector的网络窗口以查看它的工作情况