Dojo 在FilteringSelect上动态定义存储

Dojo 在FilteringSelect上动态定义存储,dojo,dijit.form,dijit.layout,Dojo,Dijit.form,Dijit.layout,我正在尝试dijit.form.FilteringSelect,具体取决于响应中定义的类型。根据响应动态设置存储时,我收到一个错误: SCRIPT5007:对“in”的操作数无效:应为对象 代码如下: var store=this.response.items[i].Name; var myTextBox = new dijit.form.FilteringSelect({ title:this.response.items[i].DisplayName,

我正在尝试dijit.form.FilteringSelect,具体取决于响应中定义的类型。根据响应动态设置存储时,我收到一个错误:

SCRIPT5007:对“in”的操作数无效:应为对象

代码如下:

var store=this.response.items[i].Name;
        var myTextBox = new dijit.form.FilteringSelect({
            title:this.response.items[i].DisplayName,
            name:this.response.items[i].Name,
            type:"picklist",
            value: "CA",
            store: this.response.items[i].Name,
            searchAttr: "name"  
    });

    debugger;
        dijit.byId("test").domNode.appendChild(myTextBox.domNode);

var Subsidiary = new dojo.store.Memory({

            data: [
                    {name:"Alabama", id:"AL"},
                    {name:"Alaska", id:"AK"},
                    {name:"American Samoa", id:"AS"},
                    {name:"Arizona", id:"AZ"},
                    {name:"Arkansas", id:"AR"},
                    {name:"Armed Forces Europe", id:"AE"},
                    {name:"Armed Forces Pacific", id:"AP"},
                    {name:"Armed Forces the Americas", id:"AA"},
                    {name:"California", id:"CA"},
                    {name:"Colorado", id:"CO"},
                    {name:"Connecticut", id:"CT"},
                    {name:"Delaware", id:"DE"}
                ]

        });
var MainClaimNumber=new dojo.store.Memory({

到目前为止,我知道有2个值的类型为FilteringSelect,因此我正在硬编码存储的名称


请指导如何实现这一点。

您似乎希望字符串神奇地插入变量。这不是JavaScript的工作方式。您正在函数范围内定义变量,并有效地设置
存储:
,并希望
查找同名变量……但它只是转到b此外,在您尝试分配存储之前,看起来您实际上并没有定义有问题的变量

但是,考虑到您想要做的事情,您应该能够通过在对象哈希中创建存储,然后使用字符串值动态查找其中一个键来进行一些小的调整以使其正常工作:

var stores = {
    Subsidiary: new dojo.store.Memory(...),
    MainClaimNumber: new dojo.store.Memory(...)
};

var myTextBox = new dijit.form.FilteringSelect({
    // ...
    store: stores[this.response.items[i].Name]
});

this.response.items[i].Name的值是多少?不知怎的,我怀疑它是一个完整的商店实例……this.response.items[i].Name在第一次和第二次迭代中有值Subsidiary和MainClaimNumber,并且我已经相应地创建了商店名称
var stores = {
    Subsidiary: new dojo.store.Memory(...),
    MainClaimNumber: new dojo.store.Memory(...)
};

var myTextBox = new dijit.form.FilteringSelect({
    // ...
    store: stores[this.response.items[i].Name]
});