0

我正在尝试 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({

            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"}
                ]

        });

截至目前,我知道 FilteringSelect 类型有 2 个值,所以我正在硬编码商店的名称。

请指导如何实现这一目标。

4

1 回答 1

0

您似乎期望一个字符串神奇地插入一个变量。这不是 JavaScript 的工作方式。您正在函数范围内定义变量,并有效地设置store: <some string>并期望<some string>查找同名的变量......但它只是一个字符串。此外,在您尝试分配商店之前,您似乎并没有真正定义有问题的变量。

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

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]
});
于 2015-06-30T12:15:41.320 回答