带有没有对象的数组的新内存存储

时间:2014-07-18 20:21:01

标签: javascript dojo

我有一个没有对象的数组,我正在尝试将数据添加到我的商店。我有这个:

options: [0:value,1:value]

当我知道我需要这个时:

options: [{0:value,1:value}]

有没有办法可以在dojo或JS中的某个实用程序中修改它?我无权更改Web服务。

enter image description here

1 个答案:

答案 0 :(得分:0)

这甚至不是您要问的有效JSON或JavaScript语法,您可以定义对象,例如:

{ name: "value" }

或者您使用数组语法:

[ "value1", "value2", "value3" ]

在评论中有点令人费解之后我想你想用你的字符串数组作为dijit/form/FilteringSelect的下拉项。
嗯,这确实可以通过将数组首先转换为对象数组来实现(因为通常需要小部件才能工作)。

翻译数组的最佳模块是dojo/_base/array:map()函数。我们可以在你的案例中使用:

var output = arrUtils.map(input, function(item, idx) {
    return {
        label: item,
        id: idx
    };
});

这将翻译一个这样的数组:

[ 'value1', 'value2' ]

成:

[{ label 'value1', id: 0 }, { label: 'value2', id: 1 }]

然后您可以在dijit/form/FilteringSelect中使用,例如:

new FilteringSelect({
    store: new Memory({
        data: output
    }),
    labelAttr: 'label',
    searchAttr: 'label'
}, "mySelect");

哪个应该可以正常工作,正如您在以下小提琴中看到的那样:http://jsfiddle.net/au5Fr/


如果您需要商店,要回答您的问题,那么答案是肯定的。 dijit/form/FilteringSelect没有名为options的选项,据我所知,该选项只能在dijit/form/Select上使用。